在对话方块程序中,您既可以将选中标记的目前状态储存在一个静态变数中,又可以在收到一个WM_COMMAND讯息後,使用如下方法触发按钮:
如果您定义了BS_AUTOCHECKBOX控制项,那么完全没有必要处理WM_COMMAND讯息。在终止对话方块之前,您只要使用IsDlgButtonChecked就可以取得按钮目前的状态。不过,如果您使用BS_AUTORADIOBUTTON样式,那么IsDlgButtonChecked就不能令人满意了,因为需要为每个单选按钮都呼叫它,直到函式传回TRUE。实际上,您还要拦截WM_COMMAND讯息来追踪按下的按钮。
「OK」和「Cancel」按钮
ABOUT2有两个按键,分别标记为「OK」和「Cancel」。在ABOUT2.RC的对话方块模板中,「OK」按钮的ID值为IDOK(在WINUSER.H中被定义为1),「Cancel」按钮的ID值为IDCANCEL(定义为2),「OK」按钮是内定的:
在对话方块中,通常都这样安排「OK」和「Cancel」按钮:将「OK」按钮作为内定按钮有助於用键盘介面终止对话。一般情况下,您通过单击两个滑鼠按键之一,或者当所期望的按钮具有输入焦点时按下Spacebar来终止对话方块。不过,如果使用者按下Enter,对话方块视窗讯息处理程式也将产生一个WM_COMMAND讯息,而不管哪个控制项具有输入焦点。wParam的低字组被设定为对话方块中内定按键的ID值,除非另一个按键拥有输入焦点。在後一种情况下,wParam的低字组被设定为具有输入焦点之按键的ID值。如果对话方块中没有内定按键,那么Windows向对话方块程序发送一个WM_COMMAND讯息,讯息中wParam的低字组被设定为IDOK。如