树形控件加CheckBox的问题

icycn 2010-05-30 09:30:33
VC6中,树形控件style加了checkboxs属性,可以有多选框。
如何通过checkbox选定,获得当前勾选的ITEM啊



CPoint pt;
GetCursorPos(&pt);
ScreenToClient(&pt);
UINT flag;
m_Tree.HitTest(pt,&flag);
if(flag & TVHT_ONITEMSTATEICON)//
{
HTREEITEM seleitem=m_Tree.GetSelectedItem();
CString str=m_Tree.GetItemText(seleitem);
MessageBox(str,NULL,1);
/* NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
TV_ITEM tvItem=pNMTreeView->itemNew;
m_Tree.Select(tvItem.hItem,TVGN_DROPHILITE);
*/
}


这个只能截获勾选check的消息,但所获得的Item是高亮的Item,也就是第一条
...全文
206 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-06-07
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
icycn 2010-05-30
  • 打赏
  • 举报
回复

void CKillHide2Dlg::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CPoint pt;
GetCursorPos(&pt);
ScreenToClient(&pt);
UINT flag;
m_Tree.HitTest(pt,&flag);
if(flag & TVHT_ONITEMSTATEICON)//说明点击事件发生在树的某个ITEM的CHECKBOX上
{
// HTREEITEM seleitem=m_Tree.GetSelectedItem();
// CString str=m_Tree.GetItemText(seleitem);
// MessageBox(str,NULL,1);
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
TV_ITEM tvItem=pNMTreeView->itemNew;
m_Tree.Select(tvItem.hItem,TVGN_DROPHILITE);
CString str=m_Tree.GetItemText(tvItem.hItem);
MessageBox(str,NULL,1);
}
else
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
TV_ITEM tvItem=pNMTreeView->itemNew;
m_Tree.Select(tvItem.hItem,TVGN_DROPHILITE);
CString str=m_Tree.GetItemText(tvItem.hItem);
MessageBox(str,NULL,1);
}

*pResult = 0;
}


总是有一条Item得不到。刚开始的时候高亮的是第一条,所以得不到第一条的text
如果不是点击checkbox,而是点击后面文字。则再点击该条的checkbox时候,得不到该条的内容。为什么啊?

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧