2012-01-11 77 views
0

我的意思是點擊treeview元素 - >它顯示在列表視圖中。CTreeViewCtrl的獲取點擊事件

我創造這樣的控件(這裏的樹和列表 - > CTreeViewCtrl和CListViewCtrl)

split.Create(*this,rcDefault,NULL,0,WS_EX_CLIENTEDGE); 
    RECT rlist,rtree; 
    list.Create(split,rlist,CListViewCtrl::GetWndClassName(),WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | LVS_REPORT | LVS_EDITLABELS, WS_EX_CLIENTEDGE); 
    tree.Create(split,rtree,CTreeViewCtrl::GetWndClassName(),WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | LVS_REPORT | TVS_EDITLABELS, WS_EX_CLIENTEDGE); 
    list.AddColumn(L"KEY",0); 
    list.AddColumn(L"VALUE",1); 
    split.SetSplitterPanes(tree,list); 

哪些參數將有事件的功能?

回答

1

TVN_SELCHANGED notification code

通知該選擇已 從一個項目更改爲另一個樹視圖控件的父窗口。此通知代碼以WM_NOTIFY消息的形式以 發送。

也就是說,當你點擊一個項目,它改變TreeView控件的選擇,控制發送WM_NOTIFY消息給其父(如您的對話框)的代碼TVN_SELCHANGED,你都應該處理它。

+0

'MESSAGE_HANDLER(WM_NOTIFY,OnClickItem)'?並在OnClickIted我應該與TVN_SELCHANGED? – 2012-01-11 20:15:02

+0

'NOTIFY_HANDLER_EX(IDC_TREE_EXPLORER,TVN_SELCHANGED,OnExplorerTreeSelChanged)',請參閱http://forum.sources.ru/index.php?showtopic=274194&hl= – 2012-01-11 21:25:07

+0

但我沒有IDC_TREE_EXPLORER – 2012-01-11 23:18:04

0

在你爲MainFrm.h

// ... 
CTreeViewCtrlEx m_treeview; 

// ... 
BEGIN_MSG_MAP(CMainFrame) 
// ... 
NOTIFY_CODE_HANDLER(TVN_SELCHANGED, OnTVSelChanged) 
END_MSG_MAP() 

// mainfrm.h or mainfrm.cpp 
LRESULT CMainFrame::OnTVSelChanged(int idCtrl, LPNMHDR pnmh, BOOL& bHandled) 
{ 
    //... 
}