单文档(SDI)视图类中手动添加的CListCtrl响应鼠标单击事件!

1. 在视图类头文件定义中添加CListCtrl成员 CListCtrl m_listView; 。

 

2. 在视图类的OnInitialUpdate()函数中添加下列代码:

if (::IsWindow(m_hWnd)) { m_listView.Create(WS_CHILD |WS_VISIBLE |WS_BORDER |LVS_REPORT |LVS_SINGLESEL |LVS_SHOWSELALWAYS ,m_graph.m_rectPrediction,this,IDD_LISTCTRL); // 在这里为m_listView控件指名为IDD_LISTCTRL //后面是控件其他的相关设置! }

 

3. 然后在ap头文件中#include "resource.h"  后面添加:#define IDD_LISTCTRL (WM_USER+1003)

4. 在视图类中添加控件响应单击事件的处理函数:afx_msg void OnClickList(NMHDR* pNMHDR, LRESULT* pResult);

5. 在视图类的消息映射中添加:BEGIN_MESSAGE_MAP(C***View, CView) ON_NOTIFY(NM_CLICK,IDD_LISTCTRL,OnClickList) END_MESSAGE_MAP()

其中NM_CLICK就是单击消息标识。类比之,也可以替换成其它的消息!

 

6. 添加消息函数实现部分:void C***View::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) { // to do something you want int pos = m_listView.GetSelectionMark(); m_strcode = m_listView.GetItemText(pos,0); // 还有其他的事情... *pResult = 0; }

 

编译通过,正常运行!!!

 

至于“#define IDD_LISTCTRL (WM_USER+1003)”中用“(WM_USER+1003)”是很随意的。只要和其他的编号不同就行!!

你可能感兴趣的:(单文档(SDI)视图类中手动添加的CListCtrl响应鼠标单击事件!)