相关函数:
setscrollrange,setscrollpos,getscrollrange,getscrollpos
使用滚动条时我们需要进行的操作:
1.初始化滚动条范围和位置
在窗口创建时WM_CREATE响应时可以完成
SetScrollRange(hwnd, SB_VERT, <span>0</span><span>, NUMLINES,FALSE); SetScrollPos(hwnd, SB_VERT, </span><span>0</span>, TRUE);
2.处理窗口过程的滚动条消息
在响应WM_VSCROLL时处理
<span>switch</span>
<span>(LOWORD(wParam))
{
</span>
<span>case</span>
<span> SB_LINEUP:
....
</span>
<span>break</span>
<span>;
</span>
<span>case</span>
<span> SB_LINEDOWN:
....
</span>
<span>break</span>
<span>;
</span>
<span>case</span>
<span> SB_PAGEUP:
....
</span>
<span>break</span>
<span>;
</span>
<span>case</span>
<span> SB_PAGEDOWN:
....
</span>
<span>break</span>
<span>;
</span>
<span>case</span>
<span> SB_THUMBTRACK:
....
</span>
<span>break</span>
<span>;
</span>
<span>case</span>
<span> SB_THUMBPOSITION:
....
</span>
<span>break</span>
<span>;
} </span>
注意在wParam参数中的低十六位中可以获取鼠标在滚动条上的动作使用LOWORD(wParam)
当滚动条动作为SB_THUMBPOSITION或SB_THUMBTRACK时,可以在wParam参数中的高十六位中获取位置HIWORD(wParam)
3.更新滑块位置
SetScrollPos(hwnd, SB_VERT, XXX, TRUE);
4.根据滚动条变化更新客户端内容
可以在处理滚动条消息是设置全局参数,在WM_PAINT响应时做出响应更新
为了及时更新客户端内容
可以使用
InvalidateRect(hwnd, NULL, TRUE);
向消息队列中发送消息WM_PAINT,此消息会放在消息队列后面,知道其他消息处理完毕才会响应
或者使用
UpdateWindow(hwnd);
非队列化消息,跳过消息循环机制直接处理更新窗口
原文:https://www.cnblogs.com/ssyfj/p/8503319.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!