1
我在对话框中有一个CTreeCtrl并捕获TVN_SELCHANGED消息,但执行不会进入处理程序。什么可能是错误的? 我的代码:不能捕捉TVN_SELCHANGED
BEGIN_MESSAGE_MAP(CMaterParamExtDlg, CDialog)
ON_NOTIFY(TVN_ITEMCHANGING, IDC_MATERIAL_PROP_TREE, OnSelChangingTreeCtrl)
ON_NOTIFY(TVN_ITEMCHANGED, IDC_MATERIAL_PROP_TREE, OnSelChangedTreeCtrl)
END_MESSAGE_MAP()
void CMaterParamExtDlg :: OnSelChangedTreeCtrl (NMHDR* pNMHDR, LRESULT* pResult)
{
if (m_TreeCtrl != 0)
{
HTREEITEM treeitem = m_TreeCtrl->GetSelectedItem();
CString treeitemtext = m_TreeCtrl->GetItemText(treeitem);
MessageBox(treeitemtext);
}
*pResult = 0;
}
void CMaterParamExtDlg :: OnSelChangingTreeCtrl (NMHDR* pNMHDR, LRESULT* pResult)
{
if (m_TreeCtrl != 0)
{
HTREEITEM treeitem = m_TreeCtrl->GetSelectedItem();
CString treeitemtext = m_TreeCtrl->GetItemText(treeitem);
MessageBox(treeitemtext);
}
*pResult = 0;
}
我试图用的断点,看是否执行进入处理程序,但没有任何反应。
树控件属性:
CONTROL "",IDC_MATERIAL_PROP_TREE,"SysTreeView32",TVS_HASBUTTONS
| TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP
| TVS_TRACKSELECT | WS_BORDER | WS_HSCROLL | WS_TABSTOP,4,4,115,218
您示例中的消息映射不包含“TVN_SELCHANGED”条目。你确定你发布了正确的代码吗? –
@Joachim Pileborg非常感谢。我的消息不匹配。奇怪的是,我没有注意到它。 – user1260953