永发信息网

CTreeCtrl各层节点的判断方法

答案:2  悬赏:20  手机版
解决时间 2021-01-26 15:50
请问如何实现各层节点的判断,比如
HTREEITEM m_SelNode;
m_SelNode=m_TreeList.GetSelectedItem();//取得当前选中节点
CString ItemName;
ItemName=m_TreeList.GetItemText(m_SelNode);

int x = m_TreeList.getitemGetItemData(m_SelNode);
for(int i=0 ; i<4; i++)
{
if(x==0)
{
MessageBox(ItemName);
break;
}
else if(x == i)
{
CString str;
str.Format(_T("%d级节点:"),i);
MessageBox(str+ItemName);
break;
}
}

能判断出来吗
最佳答案
应先发送 TVM_GETNEXTITEM 消息获取每个项目的句柄,而且要根据其是否含有子项来决定是否展开这个项目,发送 TVM_EXPAND 消息展开每个含有子项的项目。
  现假定 TreeView 控件的句柄为 hWnd:
  hRootItem = (HTREEITEM)SendMessage(hWnd, TVM_GETNEXTITEM, TVGN_ROOT, NULL);
  将得到根项目的句柄 hRootItem。然后使用:
  hChildItem = (HTREEITEM)SendMessage(hWnd, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hRootItem);
  得到第一个子项的句柄。若该子项存在,则可以发送消息展开父项:
  SendMessage(hWnd, TVM_EXPAND, TVE_EXPAND, (LPARAM)hRootItem);
  使用下面的语句将获取与跟节点同级的下一个节点句柄 hTreeItem:hTreeItem = (HTREEITEM)SendMessage(hWnd, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hRootItem);
  说起来这个判断还是很麻烦的,每一项都必须判断有无子项。如果没有子项,则获取下一个同级项目再判断;如果有子项,则展开该项,并使用同样的方法该项下面的第一个子项开始判断有无子项,与前面判断父项的方法相同。这个具体的逻辑过程还是比较麻烦的。
全部回答
前几天刚刚解决的问题,测试tvis_expanded m_propety是我定义的树控件变量,item是需要测试的节点 if(tvis_expanded &amp;m_propety.getitemstate(item, tvis_expanded)) 树已经展开; else 没有展开
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
成语屈指可数的意思是什么啊?有知道释义的请
(10分,每空1分)下图是某核苷酸链示意图,
求铁拳6街机 茱莉亚连技
三价Fe与Zn怎么反应
一块草地中央有一个正方形的羊圈,边长6米,
宏达电动汽车行怎么去啊,我要去那办事
齐庄村村地址有知道的么?有点事想过去
为什么amd显卡的powerplay关了玩游戏卡
修改病句:(两个错标点、四处语病、两个错别
纤维蛋白性心包炎的典型体征是A.心界扩大B.心
赵存村村地址好找么,我有些事要过去
“吴颖希”这名字好不好?求解答,解答送分,
华晨汽车濮阳福山地址好找么,我有些事要过去
成语气决泉达的意思是什么啊?有知道释义的请
子正换日还是子初换。,,1994,11。13.晚上的
推荐资讯
位家村地址在哪,我要去那里办事
为什么说巨蟹偏狮子座
《迷人的张家界》文中的一个比喻句和一个拟人
朋友圈要红包怎么巧妙拒绝
隆江欧式古典家具地址好找么,我有些事要过去
读“某山区等高线示意图”,常有河流流经的地
有没有觉得,男医生很有魅力,特别是帅气的医
巨阵网咖地址有知道的么?有点事想过去
根据提示,写出相关的历史信息(7分)①目前
成语岁月如流的意思是什么啊?有知道释义的请
怎么让自己会说话
艺朙孔子学堂地址在什么地方,我要处理点事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?