如何捕获CTreeCtrl中的Check事件

Colin-Han 2003-12-24 10:21:43
在CTreeCtrl中显示CheckBox,当用户选中或取消选中时,应该捕获哪个消息?
...全文
596 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ShuiHan11 2021-07-30
  • 打赏
  • 举报
回复

item = m_CheckToolTree.HitTest(point, &flag);
if (flag == TVHT_ONITEMSTATEICON)
{
}

modena 2003-12-25
  • 打赏
  • 举报
回复
其实可以直接响应TV_DISPINFO消息
Colin-Han 2003-12-24
  • 打赏
  • 举报
回复
但是,如果我直接点击CheckBox,并不产生这样的消息
windyloft 2003-12-24
  • 打赏
  • 举报
回复
同意
hustwjz 2003-12-24
  • 打赏
  • 举报
回复
OnSelectChange或OnClick
然后检查该选项有没有被选中,除此之外没有别的消息
sperd 2003-12-24
  • 打赏
  • 举报
回复
解决了
使用treeCtrl.Hittest;

void CMyTree::OnLButtonDown(UINT nFlags, CPoint point)
{
HTREEITEM temp;

UINT uFlags=0;
temp=tree.HitTest(point,&uFlags);
if(uFlags==64) //64就是鼠标点击在复选框内时uFlags的值,具体的宏我
//不知道是什么,我是检测到的值
{
//自定义操作,其得到的HTREEITEM 类型的temp就是你点击复选框所在的item
//一切都解决了!
}

CTreeCtrl::OnLButtonDown(nFlags, point);
}
ShuiHan11 2021-07-30
  • 举报
回复
@sperd TVHT_ONITEMSTATEICON 是这个,等于64
osborn 2003-12-24
  • 打赏
  • 举报
回复
响应NM_CLICK和空格键。

http://expert.csdn.net/Expert/topic/2487/2487368.xml?temp=.7309076
shootingstars 2003-12-24
  • 打赏
  • 举报
回复
没有使用过,但是应该可以监测NM_CLICK消息,再HitTest吧。
sperd 2003-12-24
  • 打赏
  • 举报
回复
顶,我遇到了同样的问题
不知道有什么好的办法
只有一个比较勉强的办法

使用多线程,使用死循环一直检测所有树型item的状态
只要它的状态改变,就响应我自定义的函数

我想不出来什么好办法,哪位大侠有更好的办法?

15,980

社区成员

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

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