版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32716885/article/details/83820800
1:TreeCtrl控件
功能:想要获取点击的Item内容,想着在NM_CLICK消息中处理。
以下是我的处理方式:
void CTest_TreeCtrlDlg::OnNMClickTreeNormal(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
HTREEITEM hItem = m_tree.GetSelectedItem();
CString strSelect = m_tree.GetItemText(hItem);
AfxMessageBox(strSelect);//提示选中的文本信息
}
根据上述代码设置后,发现,当我点击item时,是有延迟操作的。每次选中的是上一个item的内容,很是奇怪?
难道是我没有根据鼠标坐标来获取的原因?这个有待考察。
后来,我就用TVN_SELCHANGED消息处理。
以下是我的处理方式:
void CTest_TreeCtrlDlg::OnTvnSelchangedTreeNormal(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
HTREEITEM hItem = m_tree.GetSelectedItem();
CString strSelect = m_tree.GetItemText(hItem);
}
当这两个消息同时存在时,出现了一种现象:
NMCLICK消息只显示包含子节点的item,TVN_SELCHANGED只显示子节点item。