CtreeCtrl 隐藏滚动条后,如何实现鼠标中轮滚动功能

mrbbsp 2020-07-24 02:51:17
请问,CtreeCtrl 控件, 隐藏滚动条后,如何实现鼠标中轮滚动功能,多谢!


一、将控件属性 Scroll 设为 False后,怎么搞都移动不了控件节点

二、将控件属性 Scroll 设为 True,函数 m_tree.EnableScrollBarCtrl(1, FALSE); //隐藏掉滚动条
可以隐藏掉滚动条,但是 鼠标放在 控件区域, 滚动中轮,无法触发 对话框 OnMouseWheel 消息。
...全文
413 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
psbeond 2020-09-24
  • 打赏
  • 举报
回复
自己处理滚轮消息后,发送WM_VSCROLL消息给tree。
sevancheng 2020-09-03
  • 打赏
  • 举报
回复
好好的滚动条不用,不别扭吗?
schlafenhamster 2020-09-02
  • 打赏
  • 举报
回复
对的很 !!!!
mrbbsp 2020-09-02
  • 打赏
  • 举报
回复
谢谢 schlafenhamster 的耐心指导。

本人不熟MFC,在做个小工具,现学现用,回复的内容没看明白。

6楼的意思是重载 CTreeCtrl 类, 新类名字为 cTree , 新类里重写 OnMouseWheel 函数吗?



schlafenhamster 2020-08-14
  • 打赏
  • 举报
回复
BOOL cTree::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
// TODO: Add your message handler code here and/or call default
HTREEITEM hItem=GetFirstVisibleItem();
if(zDelta >0)
hItem=GetPrevVisibleItem(hItem);
else
hItem=GetNextVisibleItem(hItem);
SelectSetFirstVisible(hItem);
return TRUE;
Eleven 2020-08-14
  • 打赏
  • 举报
回复
CTreeCtrl::SelectSetFirstVisible
schlafenhamster 2020-07-27
  • 打赏
  • 举报
回复
BOOL cTree::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
// TODO: Add your message handler code here and/or call default

CRect rcClient;
GetClientRect(rcClient);
int hei=GetItemHeight();
hei /=zDelta/WHEEL_DELTA;
CRect scrollRect(0, hei, rcClient.right, rcClient.bottom);
ScrollWindowEx(0, hei, &scrollRect, &scrollRect, 0, 0, SW_INVALIDATE);
return TRUE;
} 你还需要 重绘 一行
mrbbsp 2020-07-27
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
SPY++ 查看是否有 WM_MOUSEWHEEL 消息产生?
控件是否有获得焦点?



有获得焦点(节点文字变色了)。

这控件上,转动中轮,SPY++监视提示 “WM_KICKIDLE”


schlafenhamster 2020-07-25
  • 打赏
  • 举报
回复
可能要 自绘 才行
zgl7903 2020-07-24
  • 打赏
  • 举报
回复
SPY++ 查看是否有 WM_MOUSEWHEEL 消息产生?
控件是否有获得焦点?
schlafenhamster 2020-07-24
  • 打赏
  • 举报
回复
"鼠标放在 控件区域" 哪里?

15,979

社区成员

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

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