对话框中关于CTreeCtrl事件响应的问题?
我新建了一个对话框工程,然后我往对话框中添加了一个CTreeCtrl变量,同时添加了OnCreate函数,具体定义如下:
int CMy33Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_tree)
m_tree.Create(WS_CHILD|WS_VISIBLE|TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS,CRect(0,0,0,0),this,ID_FILETREE);
HTREEITEM hti,hti2,hti3;
hti = m_tree.InsertItem(_T("一层目录"));
m_tree.InsertItem(_T("一层目录2"));
hti2 = m_tree.InsertItem(_T("二层目录"), hti);
hti3 = m_tree.InsertItem(_T("三层目录"), hti2);
m_tree.InsertItem(_T("四层目录"), hti3);
m_tree.InsertItem(_T("二层目录2"), hti);
m_tree.InsertItem(_T("三层目录2"), hti2);
m_tree.InsertItem(_T("四层目录2"), hti3);
hti = m_tree.GetRootItem();
m_tree.SelectItem(hti);
m_tree.Expand(hti,TVE_EXPAND);
return 0;
}
然后我想为m_tree添加两个事件,一个是鼠标双击,一个时节点展开。
首先,在头文件中定义了#define ID_FILETREE 96367
然后,头文件中加了
afx_msg void OnItemexpanding(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnDblclk(NMHDR* pNMHDR, LRESULT* pResult);
消息映射中加了:
ON_NOTIFY(TVN_ITEMEXPANDING, ID_FILETREE, OnItemexpanding)
ON_NOTIFY(NM_DBLCLK, ID_FILETREE, OnDblclk)
OnItemexpanding和OnDblclk也做了简单定义:
void CMy33Dlg::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)
{
MessageBox("dbclick");
}
void CMy33Dlg::OnItemexpanding(NMHDR* pNMHDR, LRESULT* pResult)
{
MessageBox("expand");
}
为什么鼠标的双击事件可以正常响应,而节点展开却不能响应相关的函数呢?
很是郁闷啊。。。。
希望各位告诉帮忙解决一下哦~