求救:困扰我两天的一个CTreeCtrl问题

bingocn 2003-07-28 02:20:44
下面是我在CTreeCtrl中添加item的代码:

HTREEITEM htItem = InsertItem( _T("A"));
Expand( htItem, TVE_EXPAND);

htItem = InsertItem( _T("B"));
InsertItem( _T("B1"), 1, 1, htItem);
Expand( htItem, TVE_EXPAND );

htItem = InsertItem( _T("C"));
InsertItem( _T("C1"), 1, 1, htItem);
Expand( htItem, TVE_EXPAND );

程序中,我给A动态添加了子item,下面可能还存在她自己的子item,因为子item的内容不确定,所以我想通过GetRootItem()根据根的内容来判断,对这些子item的处理方法都相同。
我这么判断是否点击A中的子条目的:
if (myTreeCtrl.GetItemText(myTreeCtrl.GetRootItem())=='A')
{....}
可是问题出现了,当我点击B/B1/C/C1等的时候,他们的RootItem也是'A',而不是我想看到的B或者C。

我该在哪里改呢?怎么做呢?
多谢!
...全文
30 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdp820101 2003-07-28
  • 打赏
  • 举报
回复
BOOL FindParent(HTREEITEM hCItem,CString &szParentItemText)
{
HTREEITEM hPItem;

if(!(hPItem=GetParentItem(hCItem)))
return FALSE;

if(GetItemText()==szParentItemText)
{
return TRUE;
}
else
{
return FindParent(hPItem,szParentItemText);

}

}
这个程序可以帮你的递归查找其父结点
bingocn 2003-07-28
  • 打赏
  • 举报
回复
这个函数我测不了 :(
因为在初始化Treectrl的时候,会有一个OnSelchanged()事件,事实上界面还没出来,然后在OnSelchanged中调用GetTheRoot()的VERIFY(hRoot);时会出错。
有什么办法吗?
bphantom 2003-07-28
  • 打赏
  • 举报
回复
GZ
skyxie 2003-07-28
  • 打赏
  • 举报
回复
试试这样:
自己写个函数HTREEITEM GetTheRoot(HTREEITEM & hItem)
{
HTREEITEM hRoot;
hRoot = GetParentItem(hItem);
while( hRoot && hRoot!=TVI_ROOT )
{
hRoot = GetParentItem(hRoot);
}
VERIFY(hRoot);
return hRoot;
}
bingocn 2003-07-28
  • 打赏
  • 举报
回复
我在其他地方用的是GetParentItem(); 可A下面的条目都是动态添加的,我不知道有几个Parent才到A。
做循环判断也不方便,因为我另外一个地方可能也要这么用,所以我想直接得到最上层的条目内容。
像资源管理器的左边一样,可能有很深的子目录。

maomaor 2003-07-28
  • 打赏
  • 举报
回复
应该用GetParentItem();//最近的上一级item
而不是GetRootItem();//all is 'A'
bingocn 2003-07-28
  • 打赏
  • 举报
回复
不行,这样的话一出来他们都是在同一级:

-A
-B
-B1
-C
-C1
skyxie 2003-07-28
  • 打赏
  • 举报
回复
这样试试:

HTREEITEM hParItem = TVI_ROOT;
HTREEITEM htItem = InsertItem( _T("A"));
Expand( htItem, TVE_EXPAND);

htItem = InsertItem( _T("B"));
InsertItem( _T("B1"), 1, 1, hParItem);
Expand( htItem, TVE_EXPAND );

htItem = InsertItem( _T("C"));
InsertItem( _T("C1"), 1, 1, hParItem);
Expand( htItem, TVE_EXPAND );

15,979

社区成员

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

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