注意第二个SendMessage呼叫前面的运算子「!」,其中lParam是在WM_COMMAND讯息中传给使用者视窗讯息处理程式的子视窗代号。如果您以後又想知道按钮的状态,那么可以向它发送另一条BM_GETCHECK讯息;您也可以将目前状态储存在您的视窗讯息处理程式中的一个静态变数里,或者向它发送BM_SETCHECK讯息来初始化带勾选标记的BS_CHECKBOX核取方块:
对BS_AUTOCHECKBOX样式,按钮自己触发勾选标记的开和关,所以您的视窗讯息处理程式可以忽略WM_COMMAND讯息。当您需要按钮目前的状态时,可以向控制项发送BM_GETCHECK讯息:
如果该按钮被选中,则iCheck的值为TRUE或者非零数;如果按钮末被选中,则iCheck的值为FALSE或0。
其余两种核取方块样式是BS_3STATE和BS_AUTO3STATE,正如它们名字所暗示的,这两种样式能显示第三种状态-核取方块内是灰色-它出现在向控制项发送wParam等於2的WM_SETCHECK讯息时。灰色是向使用者表示此框不能被选本章的或者禁止使用。
核取方块沿矩形的左边框对齐,并集中在呼叫CreateWindow时规定的矩形的顶边和底边之间,在该矩形内的任何地方按下滑鼠都会向其父视窗发送一个WM_COMMAND讯息。核取方块的最小高度是一个字元的高度,最小宽度是文字中的字元数加2。
单选按钮
单选按钮的名称在一列按钮的後面,这些按钮就像汽车上的收音机一样。汽车收音机上的每一个按钮都对应一种收音状态,而且一次只能有一个按钮被按下。在对话方块中,单选按钮组常常用来表示相互排斥的选项。与核取方块不同,单选按钮的工作与开关不一样,也就是说,当第二次按单选按钮时,它的状态会保持不变。
单选按钮的形状是一个圆圈,而不是方框,除此之外,它非常像核取方块。圆圈内的加重圆点表示该单选按钮已经被选中。单选按钮有视窗样式BS_RADIOBUTTON或BS_AUTORADIOBUTTON两种,但是後者只