我有一个WTL81应用程序。 CMainFrame有一个子CPaneContainer,它有一个子窗口CTreeViewCtrl。问题是CTreeViewCtrl没有收到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()
};
Tree就像这样实现
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)
OnDblClick - 正常工作
OnItemExpanding - 正常工作
OnSelChanged - 不起作用
关于可能出现什么问题的任何想法?
答案 0 :(得分:1)
解决。我的问题是treeview是多选的,那种树不发送TVN_SELCHANGED通知
答案 1 :(得分:0)
您还没有提到为什么需要TVN_SELCHANGING。当树节点发生更改并且正在选择另一个树节点时,将触发该事件。
作为替代方案,您可以尝试TVN_SELCHANGED或HitTest()。我正在提供MFC链接.. http://msdn.microsoft.com/en-us/library/x0w7ft34.aspx