天天看點

子視窗控件——滾動條控件(Scroll Bar)

SBS_VERT和SBS_HORZ。點選滾動條控件,給父視窗發送的是WM_VSCROLL或WM_VSCROLL而不是WM_COMMAN。消息的lParam是視窗句柄,wParam與視窗滾動條一樣,低字是通知碼(SB_LINEUP等),高字是滾動塊的位置。

可以用GetSystemMerics(SM_CYHSCROLL)得到視窗垂直滾動條的長度,用SM_CXVHSCROLL參數得到水準滾動條的寬度。在對話框中,可以用SBS_LEFTALIGN等設定滾動條的停靠。

一些函數:

SetScrollRange(hwndScroll,SB_CTL,iMin,iMax,bRedraw);

SetScrollPos(hwndScroll,SB_CTL,iPos,bRedraw);

SetScrollInfo(hwndScroll,SB_CTL,&si,bRedraw);

視窗滾動條也用這些函數,不過第二個參數是SB_VERT或SB_HORZ)。

COLOR_SCROLLBAR這個系統色不再用做滾動條顔色。

重繪前發送WM_CTLCOLORSCROLLBAR消息。

Scroll Bar獲得焦點時,可以處理鍵盤擊鍵消息。END鍵産生SB_BOTTOM消息,HOME鍵産生SB_TOP消息……要滑鼠點選SB時獲得焦點,CreateWindow中必須有WS_TABSTOP這個辨別。

SetWindowLong(hwndChild,GWL_WNDPROC,(LONG)ChildProc)可以定義自己的控件消息處理,同時傳回原來的消息處理函數。這個技術叫“window subclassing",非常強大,可以挂載自己的函數,再把不關心的消息交給原來的消息處理函數。

繼續閱讀