Klicken Sie auf Ereignis für ctreeviewCtrl
-
27-10-2019 - |
Frage
Ich meine, klicken Sie auf Element von TreeView -> Es wird in ListView angezeigt.
Ich erstelle solche Steuerelemente (wo Baum und Liste -> ctreeviewCtrl und 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);
Welche Parameter haben die Ereignisfunktion?
Lösung
TVN_SELCHANGED -Benachrichtigungscode:
Benachrichtigt das übergeordnete Fenster eines Baumanblick-Steuerelements, dass sich die Auswahl von einem Element zu einem anderen geändert hat. Dieser Benachrichtigungscode wird in Form einer WM_NOTIFY -Nachricht gesendet.
Wenn Sie auf ein Element klicken und es die Auswahl der TreeView -Steuerung ändert, wird das Steuerelement gesendet WM_NOTIFY
Nachricht an den übergeordneten (z. B. Ihr Dialog) mit Code TVN_SELCHANGED
Und du solltest damit umgehen.
Andere Tipps
In Ihrem Mainfrm.h
// ...
CTreeViewCtrlEx m_treeview;
// ...
BEGIN_MSG_MAP(CMainFrame)
// ...
NOTIFY_CODE_HANDLER(TVN_SELCHANGED, OnTVSelChanged)
END_MSG_MAP()
und
// mainfrm.h or mainfrm.cpp
LRESULT CMainFrame::OnTVSelChanged(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
{
//...
}