社区
界面
帖子详情
TreeCtrl 在展开某一项时,如何设置滚动条不移动
huanmeng2008
2010-05-15 05:42:43
当选中展开某个节点,而这个节点下有很多子项的时候,这个时候出现滚动条,并且会自动下移把选中项显示在窗口最上方。
我现在需要的是选中展开某个节点的时候, 选中节点的位置不移动,就在当前位置展开。 应该如何设置?
知道的帮帮忙,不知道的帮忙顶下,谢谢~~~!!!!!。
...全文
180
17
打赏
收藏
TreeCtrl 在展开某一项时,如何设置滚动条不移动
当选中展开某个节点,而这个节点下有很多子项的时候,这个时候出现滚动条,并且会自动下移把选中项显示在窗口最上方。 我现在需要的是选中展开某个节点的时候, 选中节点的位置不移动,就在当前位置展开。 应该如何设置? 知道的帮帮忙,不知道的帮忙顶下,谢谢~~~!!!!!。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
EYIIJIUIUI
2010-05-17
打赏
举报
回复
没分吗 我可是冲着100分来的
打个8折也行啊
huanmeng2008
2010-05-15
打赏
举报
回复
额。。。 搞定了, 上面不行应该是执行弹出右键菜单造成的,应该是弹出菜单的时候没选择菜单 程序不返回后面就没调用EnsureVisible(hItem);这个函数了。
我改成下面方法就可以了。
void
XXX::OnTvnItemexpanding(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
this->first_visible_item_ = GetFirstVisibleItem();
*pResult = 0;
}
void
XXX::OnTvnItemexpanded(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
EnsureVisible(this->first_visible_item_);
*pResult = 0;
}
谢谢你们~~~~!!!!
不说害怕
2010-05-15
打赏
举报
回复
EnsureVisible(hItem);
CTreeCtrl::OnRButtonDown(nFlags, point);
这两句调换一下?
主要是你啥时候展开的? 必须的展开操作之后调用EnsureVisible
不说害怕
2010-05-15
打赏
举报
回复
HTREEITEM hItem = GetFirstVisibleItem();
// 处理。。。
EnsureVisible(hItem)
理论上应该可以.
就是找到当前第一个可见..然后在展开后..再使刚才第一个可见保持第一个可见.
huanmeng2008
2010-05-15
打赏
举报
回复
大哥。。。还是不行。
void XXXXX::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
HTREEITEM hItem = GetFirstVisibleItem();
this->select_item_ = HitTest(point, &nFlags);
if ( this->select_item_ )
{
SelectItem(this->select_item_);
创建右键菜单
。。。。。。。。。。。。。。。。
}
EnsureVisible(hItem);
CTreeCtrl::OnRButtonDown(nFlags, point);
}
树形风格:WS_VISIBLE | WS_BORDER | TVS_HASLINES | TVS_FULLROWSELECT | TVS_SINGLEEXPAND
右键首先先展开, 由于子项过多,出现滚动条,同时滚动条下移 选中项出现在窗口最上方
EYIIJIUIUI
2010-05-15
打赏
举报
回复
HTREEITEM hItem = GetFirstVisibleItem();
// 处理。。。
EnsureVisible(hItem)
huanmeng2008
2010-05-15
打赏
举报
回复
不行 没效果,是不是要设置控件的某些属性
EYIIJIUIUI
2010-05-15
打赏
举报
回复
是的阿
huanmeng2008
2010-05-15
打赏
举报
回复
就是说 EnsureVisible(GetRootItem())的话 根节点就一直显示第一个?
EYIIJIUIUI
2010-05-15
打赏
举报
回复
GetFirstVisibleItem得到第一个Visible Item, hItem
EnsureVisible(hItem)
huanmeng2008
2010-05-15
打赏
举报
回复
this->select_item_ = HitTest(point, &nFlags);
if ( this->select_item_ )
{
EnsureVisible(this->select_item_);
SelectItem(this->select_item_);
}
在 OnRButtonDown()中调用这个 也一样那个的没效果,右键的时候显示项目已经选中了。 滚动条还是动。
EYIIJIUIUI
2010-05-15
打赏
举报
回复
GetSelectedItem()没有选中项目
huanmeng2008
2010-05-15
打赏
举报
回复
[Quote=引用 2 楼 yulinxie 的回复:]
pmyTreeCtrl->Expand(hParent, TVE_EXPAND);
// Ensure the item is visible.
pmyTreeCtrl->EnsureVisible(hmyItem);
[/Quote]
我在OnTvnItemexpanding 中调用 EnsureVisible(GetSelectedItem()); 没效果.
快乐鹦鹉
2010-05-15
打赏
举报
回复
真是不太清楚,没有做过。
EYIIJIUIUI
2010-05-15
打赏
举报
回复
给分啊
EYIIJIUIUI
2010-05-15
打赏
举报
回复
pmyTreeCtrl->Expand(hParent, TVE_EXPAND);
// Ensure the item is visible.
pmyTreeCtrl->EnsureVisible(hmyItem);
EYIIJIUIUI
2010-05-15
打赏
举报
回复
调用EnsureVisible()函数就可以了
VC++常用功能实例
◆当对话框中有一个
滚动条
是,当滚动
滚动条
时
的消息控制函数◆ 27 ◆将一个CWnd指针转换成一个控件ID(整数)注意用GetDlgItem()函数是从一个控件ID转换成一个CWnd的指针◆ 28 ◆如果在对话框中自定义一个消息的方法,...
VC++常用的共用函数100多页
◆当对话框中有一个
滚动条
是,当滚动
滚动条
时
的消息控制函数◆ 27 ◆将一个CWnd指针转换成一个控件ID(整数)注意用GetDlgItem()函数是从一个控件ID转换成一个CWnd的指针◆ 28 ◆如果在对话框中自定义一个消息的方法,...
C++MFC教程
4、窗口句柄:说到消息就不能不说窗口句柄,系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息
时
必须指定一个窗口句柄表明该消息由那个窗口接收。而每个窗口都会有自己的窗口过程,所以用户的输入就会...
Visual C++ 编程资源大全(源码 控件)
但它的缺点是当鼠标拖动较快
时
,缩放会跟不上鼠标
移动
。你可以试着修正这个bug。(29KB)<END><br>62,conpager.zip 如果你的工具栏太长了,需要在水平方向上左右滚动怎么办?其他一些类似情况呢?别着急,这个类库...
Visual_C++MFC教程.doc
- **
滚动条
类型**:学习不同类型的
滚动条
。 - **
滚动条
事件**:响应
滚动条
位置变化。 - **4.5 ListBox/CheckListBox** - **列表框使用**:学习如何创建和使用列表框。 - **复选列表框**:实现多项选择功能。 -...
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章