学习windows编程 day2 之滚动条使用

时间:2022-01-13 03:48:21

setscrollrange,setscrollpos,getscrollrange,getscrollpos

使用滚动条时我们需要进行的操纵:

1.初始化滚动条范畴和位置

在窗口创建时WM_CREATE响应时可以完成

SetScrollRange(hwnd, SB_VERT, 0, NUMLINES,FALSE); SetScrollPos(hwnd, SB_VERT, 0, TRUE);

2.措置惩罚惩罚窗口过程的滚动条动静

在响应WM_VSCROLL时措置惩罚惩罚

switch(LOWORD(wParam)) { case SB_LINEUP: .... break; case SB_LINEDOWN: .... break; case SB_PAGEUP: .... break; case SB_PAGEDOWN: .... break; case SB_THUMBTRACK: .... break; case SB_THUMBPOSITION: .... break; }

注意在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);

非行列队伍化动静,,跳过动静循环机制直接措置惩罚惩罚更新窗口