核取方块是一个文字方块,文字通常出现在核取方块的右边(如果您在建立按钮时指定了BS_LEFTTEXT样式,那么文字会出现在左边;您也许将用BS_RIGHT直接调整文字来组合此样式)。核取方块通常用於允许使用者对选项进行选择的应用程式中。核取方块的常用功能如同一个开关:单击框一次将显示勾选标记,再次单击清除勾选标记。
常用样式
核取方块最常用的两种样式是BS_CHECKBOX和BS_AUTOCHECKBOX。
BS_CHECKBOX
在使用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
对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。