首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >滚动条在WM_VSCROLL之后向后移动

滚动条在WM_VSCROLL之后向后移动
EN

Stack Overflow用户
提问于 2010-05-16 22:21:37
回答 2查看 6.4K关注 0票数 3

我有一个窗口,它有自己的H和V滚动。我是这样处理这个事件的:

代码语言:javascript
复制
case WM_VSCROLL:

        SetScrollPos(hWnd, SB_VERT, (int)HIWORD(wParam), TRUE);

        break;

我只想让滚动条的位置在我松开鼠标后保持不变,但它所做的只是在松开鼠标后回到顶部。我做错了什么?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-16 22:32:45

WM_VSCROLL消息的代码参数可以是SB_TOPSB_BOTTOMSB_PAGEUPSB_PAGEDOWNSB_LINEUPSB_LINEDOWNSB_THUMBPOSITIONSB_THUMBTRACK,其中的名称应该自行解释。

  • SB_TOPSB_BOTTOM表示滚动窗口将分别转到顶部或底部。可以通过右击垂直滚动条并选择“顶部”和“底部”来发送这些消息。(在Windows记事本中,Win XP+对于instance.)
  • SB_PAGEUPSB_PAGEDOWN意味着向上或向下的页面(屏幕)。如果您单击拇指或向上或向下箭头旁边滚动条上的某个位置,或者如果您使用滚动条的右键单击menu.
  • SB_LINEUPSB_LINEDOWN,则当用户单击滚动条上的向上和向下按钮或选择相应的右键菜单时,将发送commands.
  • SB_THUMBTRACK。当用户通过拖动鼠标滚动时,将连续发送scrollbar.
  • SB_THUMBPOSITION当用户释放拇指时,将发送thumb。

有关更多信息,请参阅MSDN文章WM_VSCROLL

因此,当您收到WM_VSCROLL消息时,您首先需要自己进行滚动。例如,如果您正在编写文本编辑器,则需要重新绘制文本,但在窗口顶部使用不同的行。然后,您需要将滚动条更新到它的新位置,最好是通过SetScrollInfo,但也可以使用旧的SetScrollPos函数。

票数 10
EN

Stack Overflow用户

发布于 2016-10-10 16:47:33

在案例部分中,系统正在处理WM_VSCROLL消息。它将在您的SetScrollPos之后运行默认的窗口过程。在默认的窗口过程中,系统本身将设置滚动条的拇指位置。所以,尽管SetScrollPos生效,系统还是会在那之后改变拇指的位置。我认为你应该在调用默认的窗口过程之后做你的SetScrollPos,也就是,也许在返回这个函数之后,然后你就可以SetScrollPos了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2844082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档