核取方塊
核取方塊
徠核取方塊是一個文字方塊,文字通常出現在核取方塊的右邊(如果您在建立按鈕時指定了BS_LEFTTEXT樣式,那麼文字會出現在左邊;您也許將用BS_RIGHT直接調整文字來組合此樣式)。核取方塊通常用於允許使用者對選項進行選擇的應用程式中。核取方塊的常用功能如同一個開關:單擊框一次將顯示勾選標記,再次單擊清除勾選標記。
目錄
核取方塊最常用的兩種樣式是BS_CHECKBOX和BS_AUTOCHECKBOX。在使用BS_CHECKBOX時,您需要自己向該控制項發送BM_SETCHECK訊息來設定勾選標記。wParam參數設1時設定勾選標記,設0時清除勾選標記。通過向該控制項發送BM_GETCHECK訊息,您可以得到該核取方塊的目前狀態。在處理來自控制項的WM_COMMAND訊息時,您可以用如下的指令來翻轉X標記:
SendMessage ((HWND) lParam, BM_SETCHECK, (WPARAM)
!SendMessage ((HWND) lParam, BM_GETCHECK, 0, 0), 0) ;
注意第二個SendMessage呼叫前面的運運算元「!」,其中lParam是在WM_COMMAND訊息中傳給使用者視窗訊息處理程式的子視窗代號。如果您以後又想知道按鈕的狀態,那麼可以向它發送另一條BM_GETCHECK訊息;您也可以將目前狀態儲存在您的視窗訊息處理程式中的一個靜態變數里,或者向它發送BM_SETCHECK訊息來初始化帶勾選標記的BS_CHECKBOX核取方塊:
SendMessage (hwndButton, BM_SETCHECK, 1, 0) ;
對BS_AUTOCHECKBOX樣式,按鈕自己觸發勾選標記的開和關,所以您的視窗訊息處理程式可以忽略WM_COMMAND訊息。當您需要按鈕目前的狀態時,可以向控制項發送BM_GETCHECK訊息:
iCheck = (int) SendMessage (hwndButton, BM_GETCHECK, 0, 0) ;
如徠果該按鈕被選中,則iCheck的值為TRUE或者非零數;如果按鈕末被選中,則iCheck的值為FALSE或0。
其餘兩種核取方塊樣式是BS_3STATE和BS_AUTO3STATE,正如它們名字所暗示的,這兩種樣式能顯示第三種狀態-核取方塊內是灰色-它出現在向控制項發送wParam等於2的WM_SETCHECK訊息時。灰色是向使用者表示此框不能被選本章的或者禁止使用。
核取方塊沿矩形的左邊框對齊,並集中在呼叫CreateWindow時規定的矩形的頂邊和底邊之間,在該矩形內的任何地方按下滑鼠都會向其父視窗發送一個WM_COMMAND訊息。核取方塊的最小高度是一個字元的高度,最小寬度是文字中的字元數加2。