没有收到TVN_SELCHANGING
我有一个WTL81应用程序。 CMainFrame有一个子CPaneContainer,它有一个子窗口CTreeViewCtrl。问题是CTreeViewCtrl不会收到TVN_SELCHANGING消息。没有收到TVN_SELCHANGING
我有“窥探”CTreeViewCtrl和他的父母(CPaneContainer)并没有收到通知代码。
的CMainFrame从公共CFrameWindowImpl<CMainFrame>
CPaneContainer实行的是这样
class PaneContainerReflectNotif : public CPaneContainer
{
BEGIN_MSG_MAP(PaneContainerReflectNotif)
CHAIN_MSG_MAP(CPaneContainer)
REFLECT_NOTIFICATIONS()
END_MSG_MAP()
};
树实行的是这样
class MyTreeView :
public CWindowImpl<CatalogTreeView, CTreeViewCtrl>,
public CCustomDraw<CatalogTreeView>,
public CTheme
...
BEGIN_MSG_MAP_EX(MyTreeView)
MSG_WM_CREATE(OnCreate)
MSG_WM_DESTROY(OnDestroy)
REFLECTED_NOTIFY_CODE_HANDLER_EX(NM_DBLCLK, OnDblClick)
REFLECTED_NOTIFY_CODE_HANDLER_EX(TVN_ITEMEXPANDING, OnItemExpanding)
REFLECTED_NOTIFY_CODE_HANDLER_EX(TVN_SELCHANGING, OnSelChanged)
onfocus此实现 - 工作正常
OnItemExpanding - 工作正常
OnSelChanged - 不起作用
任何想法上可能是什么问题呢?
解决。我的问题是,树视图是多选,这种树不发送TVN_SELCHANGING通知
你还没有提到你为什么需要TVN_SELCHANGING。当树节点发生变化时会触发该事件,并且正在选择另一个树节点。
作为替代方案,您可以尝试TVN_SELCHANGED或HitTest()。我正在提供一个MFC链接.. http://msdn.microsoft.com/en-us/library/x0w7ft34.aspx
当选择即将从一个项目更改为另一个项目时,TVN_SELCHANGING被触发。这是我需要的。 TVN_SELCHANGED也没有解雇,HitTest我不认为它有帮助 – cprogrammer 2011-04-11 11:07:35
你根本没有看到TVN_SELCHANGING?那么没有人被选中? – 2011-04-10 18:41:44
项目选择正常,这只是我没有收到TVN_SELCHANGING通知。 – cprogrammer 2011-04-10 18:51:25
使用Spy ++工具查看发生了什么。 – 2011-04-10 18:52:38