|
鼠单击其中一个单选按钮时(或者当单选按钮拥有输入焦点时按空白键),子视窗向其父视窗发送一个WM_COMMAND讯息,讯息的wParam的低字组被设为控制项的ID,wParam的高字组是一个通知码,lParam值是控制项的视窗代号。对於单选按钮,这个通知码是BN_CLICKED或者0。然後Windows中的对话方块视窗讯息处理程式将这个WM_COMMAND讯息发送给ABOUT2.C内的对话方块程序。当对话方块程序收到一个单选按钮的WM_COMMAND讯息时,它为此按钮设定选中标记,并为组中其他按钮清除选中标记。
您可能还记得在第九章中已经提过,选中和不选中按钮均需要向子视窗控制项发送BM_CHECK讯息。要设定一个按钮选中标记,您可以使用:
要消除选中标记,您可以使用:
其中hwndCtrl参数是子视窗按钮控制项的视窗代号。
但是在对话方块程序中使用这种方法是时有点问题的,因为您不知道所有单选按钮的视窗代号,只是从您获得的讯息中知道其中一个代号。幸运的是,Windows为您提供了一个函式,可以用对话方块代号和控制项ID来取得一个对话方块控制项的视窗代号:
(您也可以使用如下函式,从视窗代号中取得控制项的ID值:
但是在大多数情况下这是不必要的。)
您会注意到,在程式11-2所示的表头档案ABOUT2.H中,八种颜色的ID值是从IDC_BLACK到IDC_WHITE连续变化的,这种安排在处理来自单选按钮的WM_COMMAND讯息时将会很有用。在第一次尝试选中或者不选中单选按钮时,您可能会在对话方块程序中编写如下的程式:
|