tree control控件的节点可展开标志怎么设置

gaochizhen33 2012-02-07 02:37:52
在做一个项目,需要加载一个很大的资源树。如果在初始化阶段,将所有节点全部加上去,会等待几秒钟。现在想改成一级一级的添加。当用户点击每个节点前面的加号的时候,进行展开动作,同时会加载该节点下面的节点。可是在没有加载子节点的时候,该节点前面是没有可展开标志,即那个小加号。能不能通过代码,让该节点前面显示可展开标志啊?
如下 这是节点全部加载时的情况


这是分级加载节点的情况


怎么在分级加载的时候也在节点前面设置一个小加号?
...全文
445 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
feitianxiaozi 2014-07-29
  • 打赏
  • 举报
回复
会场有用的撒。。
beidatianwang 2012-04-12
  • 打赏
  • 举报
回复
非常感谢 9楼 taogx1824_126_com 我遇到相同问题,看了你的回答,现在解决了
gaochizhen33 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 taogx1824_126_com 的回复:]

添加控件事件 ON_NOTIFY(TVN_ITEMEXPANDING, IDC_TREELIST, &CVIS_ClientDlg::OnTvnItemexpandingTreelist)
void CVIS_ClientDlg::OnTvnItemexpandingTreelist(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW ……
[/Quote]
thanks 下班了试试。。我先收藏下
taogx1824_126_com 2012-03-22
  • 打赏
  • 举报
回复
添加控件事件 ON_NOTIFY(TVN_ITEMEXPANDING, IDC_TREELIST, &CVIS_ClientDlg::OnTvnItemexpandingTreelist)
void CVIS_ClientDlg::OnTvnItemexpandingTreelist(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
HTREEITEM hcur = pNMTreeView->itemNew.hItem;
if (m_list.GetParentItem(hcur) == NULL)
{
if (pNMTreeView->action == TVE_EXPAND) //节点展开 +变-
{
......
}
else
{
if (pNMTreeView->action == TVE_COLLAPSE) //节点关闭 -变+
{
........
}
}
}
*pResult = 0;
}

希望对你有用
gaochizhen33 2012-02-08
  • 打赏
  • 举报
回复

这个是不是不能单独设置啊?
gaochizhen33 2012-02-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hdg3707 的回复:]
如果不能判断滚动条的位置,那就可以根据显示在界面的节点数,先显示一部分,剩下的在定时加载一部分直到全部加载完毕.
另外,如果还不行,就用线程来加载,这样也不算太麻烦,当在线程全部加载完毕后就退出线程
[/Quote]
使用多个线程来加载的话,用户在使用的过程中会感觉到视图的刷新,也不合适。
就像我们的文件夹目录,一开始只显示C D E F几个盘,当你点击了前面的加号,就现在该磁盘下面的子文件夹。主要是如果还没有加载子节点的话,父节点前面是没有加号的,用户会以为到头了。
gaochizhen33 2012-02-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 worcy_kiddy 的回复:]
CTreeCtrl::Expand
TVE_EXPAND
[/Quote]
你说的这个是展开 跟我说的完全是两个东西
黑泡泡选手 2012-02-07
  • 打赏
  • 举报
回复
CTreeCtrl::Expand
TVE_EXPAND
hdg3707 2012-02-07
  • 打赏
  • 举报
回复
如果不能判断滚动条的位置,那就可以根据显示在界面的节点数,先显示一部分,剩下的在定时加载一部分直到全部加载完毕.
另外,如果还不行,就用线程来加载,这样也不算太麻烦,当在线程全部加载完毕后就退出线程
hdg3707 2012-02-07
  • 打赏
  • 举报
回复
我想这么多的节点肯定不能同时显示出来,应该是通过移动滚动条才能看到部分的,因此,能不能通过判断滚动条的位置,来加载当前在显示界面部分,这样当滚动条移到底时,就全部加载了
gaochizhen33 2012-02-07
  • 打赏
  • 举报
回复
上面那个是全部加载的情况,下边的是分级加载的情况
gaochizhen33 2012-02-07
  • 打赏
  • 举报
回复


图片没发上去,补上

15,979

社区成员

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

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