树视图,你选中父节点的复选框,下面的子节点也被选中 正如标题所说的,请问各位该怎么解决呢?SetCheck()?GetCheck()? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BOOL GetCheck(HTREEITEM hItem) const;BOOL SetCheck(HTREEITEM hItem, BOOL fCheck = TRUE);枚举你所选的节点的子节点,用SetCheck设置选中状态 自己定义一个继承CTreeCtrl的类,如CMyTree重载OnLButtonDown函数void CMyTree::OnLButtonDown(UINT nFlags, CPoint point) { UINT uFlags; HTREEITEM itemnode = HitTest(point, &uFlags); if (GetStyle() & TVS_CHECKBOXES) { if ((itemnode != NULL) && (uFlags & TVHT_ONITEMSTATEICON)) { BOOL checked = !GetCheck(itemnode); HTREEITEM childnode1, childnode2; childnode1 = GetChildItem(itemnode); while (childnode1) { childnode2 = GetChildItem(childnode1); if (childnode2) { childnode1 = childnode2; continue; } else { SetCheck(childnode1, checked); childnode2 = GetNextItem(childnode1, TVGN_NEXT); if (!childnode2) { childnode1 = GetParentItem(childnode1); if (childnode1 != itemnode) SetCheck(childnode1, checked); childnode1 = GetNextItem(childnode1, TVGN_NEXT); } else childnode1 = childnode2; } } } } CTreeCtrl::OnLButtonDown(nFlags, point);} wtfelse你的方法可以实现的但出现个问题,就是现在有一个节点A,下面有A1、A2;A1下有A11、A12,A2下有A21、A22;当我选中A1时,A2也被选中了的帮忙解决下结帖,谢谢 我试过在A1,A2没有子节点情况下,选择A1,A2是不会选中的。有子节点情况我没有试。你可以用GetNextSiblingItem判断一下是不是同一层节点 意思是说重写的LBUTTON函数只能在有两层目录下是有效的?三曾四曾的话就不能用,要再经过判断是吧?呵呵,我对这个刚开始看,什么都不懂,才做界面的,请你多指教啊 VS本地帮助无法使用 哪位大侠了解 在win32下 导入mfc 关于手机地图 请问怎样实作类似 Google talk 介面 的代码? 请教大家一个问题 笔试问题讨论_1 急 !急!急!各位大虾快点帮帮小弟吧···················实在不会改了,MFC的一个有关虚函数的错误 有没有办法在可执行文件运行时修改其本身? more effective的下载 COM接口导出回调函数出错 将int赋值给String 串口通信,PC端能收到数据,但是不能写!
BOOL SetCheck(HTREEITEM hItem, BOOL fCheck = TRUE);枚举你所选的节点的子节点,用SetCheck设置选中状态
重载OnLButtonDown函数
void CMyTree::OnLButtonDown(UINT nFlags, CPoint point)
{
UINT uFlags;
HTREEITEM itemnode = HitTest(point, &uFlags);
if (GetStyle() & TVS_CHECKBOXES)
{
if ((itemnode != NULL) && (uFlags & TVHT_ONITEMSTATEICON))
{
BOOL checked = !GetCheck(itemnode);
HTREEITEM childnode1, childnode2;
childnode1 = GetChildItem(itemnode);
while (childnode1)
{
childnode2 = GetChildItem(childnode1);
if (childnode2)
{
childnode1 = childnode2;
continue;
}
else
{
SetCheck(childnode1, checked);
childnode2 = GetNextItem(childnode1, TVGN_NEXT);
if (!childnode2)
{
childnode1 = GetParentItem(childnode1);
if (childnode1 != itemnode)
SetCheck(childnode1, checked);
childnode1 = GetNextItem(childnode1, TVGN_NEXT);
}
else
childnode1 = childnode2;
}
}
}
} CTreeCtrl::OnLButtonDown(nFlags, point);
}
但出现个问题,就是现在有一个节点A,下面有A1、A2;A1下有A11、A12,A2下有A21、A22;当我选中A1时,A2也被选中了的
帮忙解决下结帖,谢谢
有子节点情况我没有试。
你可以用GetNextSiblingItem判断一下是不是同一层节点
呵呵,我对这个刚开始看,什么都不懂,才做界面的,请你多指教啊