VC listcontrol 如何响应右键列头
VC里边只有左键列头的响应函数,如何完成右键响应呢,我想在列头右键做一些操作,高手帮下忙。。...
VC里边只有左键 列头的响应函数,如何完成右键响应呢,我想在列头右键做一些操作,高手帮下忙。。
展开
1个回答
展开全部
1.创建一个继承于CHeaderCtrl的新类CHeaderCtrlEx
2.创建一个继承于CListCtrl的新类CListCtrlEx
3.为CListCtrlEx包含CHeaderCtrlEx的头文件并定义一个成员变量 CHeaderCtrlEx m_Header;
4.为CListCtrlEx实现虚函数virtual void PreSubclassWindow();在函数的实现如下:
void CListCtrlEx::PreSubclassWindow()
{
// TODO: Add your specialized code here and/or call the base class
CListCtrl::PreSubclassWindow();
CHeaderCtrl *pHeader = GetHeaderCtrl();
m_Header.SubclassWindow(pHeader->GetSafeHwnd());
}
5.为CHearCtrlEx添加右键消息:
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
在消息的实现里可以产生一个自定义消息给主程序(SendMessage/PostMessage),也可以直接在里面实现你的代码。
================================
#include "HeaderCtrlEx.h"
/////////////////////////////////////////////////////////////////////////////
// CListCtrlEx window
class CListCtrlEx : public CListCtrl
{
// Construction
public:
CListCtrlEx();
CHeaderCtrlEx m_Header;
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CListCtrlEx)
protected:
virtual void PreSubclassWindow();
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CListCtrlEx();
// Generated message map functions
protected:
//{{AFX_MSG(CListCtrlEx)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
===============================
class CHeaderCtrlEx : public CHeaderCtrl
{
// Construction
public:
CHeaderCtrlEx();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CHeaderCtrlEx)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CHeaderCtrlEx();
// Generated message map functions
protected:
//{{AFX_MSG(CHeaderCtrlEx)
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
2.创建一个继承于CListCtrl的新类CListCtrlEx
3.为CListCtrlEx包含CHeaderCtrlEx的头文件并定义一个成员变量 CHeaderCtrlEx m_Header;
4.为CListCtrlEx实现虚函数virtual void PreSubclassWindow();在函数的实现如下:
void CListCtrlEx::PreSubclassWindow()
{
// TODO: Add your specialized code here and/or call the base class
CListCtrl::PreSubclassWindow();
CHeaderCtrl *pHeader = GetHeaderCtrl();
m_Header.SubclassWindow(pHeader->GetSafeHwnd());
}
5.为CHearCtrlEx添加右键消息:
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
在消息的实现里可以产生一个自定义消息给主程序(SendMessage/PostMessage),也可以直接在里面实现你的代码。
================================
#include "HeaderCtrlEx.h"
/////////////////////////////////////////////////////////////////////////////
// CListCtrlEx window
class CListCtrlEx : public CListCtrl
{
// Construction
public:
CListCtrlEx();
CHeaderCtrlEx m_Header;
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CListCtrlEx)
protected:
virtual void PreSubclassWindow();
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CListCtrlEx();
// Generated message map functions
protected:
//{{AFX_MSG(CListCtrlEx)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
===============================
class CHeaderCtrlEx : public CHeaderCtrl
{
// Construction
public:
CHeaderCtrlEx();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CHeaderCtrlEx)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CHeaderCtrlEx();
// Generated message map functions
protected:
//{{AFX_MSG(CHeaderCtrlEx)
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询