學習windows編程 day2 之滾動條使用
阿新 • • 發佈:2018-03-04
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 之滾動條使用