CTreeCtrl各层节点的判断方法
请问如何实现各层节点的判断,比如HTREEITEMm_SelNode;m_SelNode=m_TreeList.GetSelectedItem();//取得当前选中节点C...
请问如何实现各层节点的判断,比如
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;
}
}
能判断出来吗 展开
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);
说起来这个判断还是很麻烦的,每一项都必须判断有无子项。如果没有子项,则获取下一个同级项目再判断;如果有子项,则展开该项,并使用同样的方法该项下面的第一个子项开始判断有无子项,与前面判断父项的方法相同。这个具体的逻辑过程还是比较麻烦的。
现假定 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);
说起来这个判断还是很麻烦的,每一项都必须判断有无子项。如果没有子项,则获取下一个同级项目再判断;如果有子项,则展开该项,并使用同样的方法该项下面的第一个子项开始判断有无子项,与前面判断父项的方法相同。这个具体的逻辑过程还是比较麻烦的。
展开全部
应先发送 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);
说起来这个判断还是很麻烦的,每一项都必须判断有无子项。如果没有子项,则获取下一个同级项目再判断;如果有子项,则展开该项,并使用同样的方法该项下面的第一个子项开始判断有无子项,与前面判断父项的方法相同。这个具体的逻辑过程还是比较麻烦的。
现假定 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);
说起来这个判断还是很麻烦的,每一项都必须判断有无子项。如果没有子项,则获取下一个同级项目再判断;如果有子项,则展开该项,并使用同样的方法该项下面的第一个子项开始判断有无子项,与前面判断父项的方法相同。这个具体的逻辑过程还是比较麻烦的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询