1. 程式人生 > >學習windows編程 day2 之滾動條使用

學習windows編程 day2 之滾動條使用

true 根據 break 消息 line pos day2 win rac

相關函數:

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);

非隊列化消息,跳過消息循環機制直接處理更新窗口

學習windows編程 day2 之滾動條使用