转帖:http://topic.csdn.net/u/20100117/15/a922e441-3861-48a2-a396-af0e3065cf59.html
我在CView视图里动态加入2个控件CMFCTabCtrl,CListCtrl两个控件,其中CListCtrl又是CMFCTabCtrl子控件。现在的问题是CListCtrl的消息怎么捕获?
我的动态创建代码如下:
.h文件
CMFCTabCtrl TabCtrl;
CListCtrl ListCtrl;
.cpp文件
CMyView::OnInitialUpdate()
- TabCtrl.Create (CMFCTabCtrl::STYLE_3D_VS2005, rect, this, 10001, CMFCTabCtrl::LOCATION_TOP); TabCtrl.EnableTabSwap(FALSE);
- TabCtrl.ModifyTabStyle(CMFCTabCtrl::STYLE_3D_ONENOTE);
- ListCtrl.Create(WS_VISIBLE|LVS_REPORT|LVS_NOLABELWRAP,rect,&TabCtrl,10002);
- ListCtrl.InsertColumn(0, _T("TEST"), LVCFMT_LEFT, 150);
- TabCtrl.AddTab(&ListCtrl,L"测试");
- ListCtrl.ShowWindow(SW_SHOW);
- ListCtrl.SetParent(this);
这样创建的代码怎样才能取得控件ListCtrl的消息?
我用ON_NOTIFY(LVN_ITEMCHANGED, 10002, OnLvnItemchangedList)无法取得CListCtrl消息,请问应该怎么处理才可捕获ListCtrl消息?谢谢!
解决方法:
父窗口是TabCtrl,所以你要派生个CMFCTabCtrl的类来处理ListCtrl的消息
从CMFCTabCtrl派生个类CMyTabCtrl,用ON_NOTIFY重载消息映射就OK了
- BEGIN_MESSAGE_MAP(CMyTabCtrl, CMFCTabCtrl)
- ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST_DATA, &CHistoryDlg::OnLvnColumnclickListData)
- END_MESSAGE_MAP()