我有一个自己的H和V滚动窗口.我正在处理这样的事件:
case WM_VSCROLL:
SetScrollPos(hWnd, SB_VERT, (int)HIWORD(wParam), TRUE);
break;
Run Code Online (Sandbox Code Playgroud)
所有我想要的是滚动条的位置,一旦我释放我的鼠标,但它正在做的只是回到顶部之后.我究竟做错了什么?
谢谢
And*_*and 10
的wParam
所述的参数WM_VSCROLL
的消息要么是SB_TOP
,SB_BOTTOM
,SB_PAGEUP
,SB_PAGEDOWN
,SB_LINEUP
,SB_LINEDOWN
,SB_THUMBPOSITION
,或SB_THUMBTRACK
,其中,所述名称应该解释自己.
SB_TOP
并且SB_BOTTOM
表示滚动窗口分别位于顶部或底部.右键单击垂直滚动条并选择"顶部"和"底部"可以发送这些消息.(例如,在Windows记事本,Win XP +中查找.)
SB_PAGEUP
并且SB_PAGEDOWN
表示页面(屏幕)向上或向下.如果您单击拇指旁边的滚动条或向上或向下箭头上的somwhere,或者使用滚动条的右键单击菜单,则会发送这些内容.
SB_LINEUP
并SB_LINEDOWN
在用户单击滚动条上的向上和向下按钮时发送,或选择相应的右键单击菜单命令.
SB_THUMBTRACK
当用户通过拖动滚动条的拇指滚动时,会连续发送.
SB_THUMBPOSITION
用户释放拇指时发送.
有关更多信息,请参阅MSDN文章WM_VSCROLL.
因此,当您收到WM_VSCROLL消息时,首先需要自己滚动.例如,如果您正在编写文本编辑器,则需要重绘文本,但窗口顶部有不同的行.然后,您需要将滚动条更新到其新位置,最好是通过SetScrollInfo,但您也可以使用旧的SetScrollPos函数.