.主窗口向子控件发送消息

选中和不选中按钮均需要向子窗口控件发送BM_CHECK消息。要设定一个按钮选中标记,您可以使用:
SendMessage (hwndCtrl, BM_SETCHECK, 1, 0) ;
要消除选中标记,您可以使用:
SendMessage (hwndCtrl, BM_SETCHECK, 0, 0) ;

其中hwndCtrl参数是子窗口按钮控件的窗口句柄。

第一种简化的方法是使用专门的对话框程序SendDlgItemMessage:

SendDlgItemMessage (hDlg, id, iMsg, wParam, lParam) ;
       
它相同于:

SendMessage (GetDlgItem (hDlg, id), id, wParam, lParam) ;  现在,循环将变成这样:
for (i = IDC_BLACK, i <= IDC_WHITE, i++)  SendDlgItemMessage (hDlg, i, BM_SETCHECK, i == LWORD (wParam), 0) ;
稍微有些改进。但是真正的重大突破要等到使用了CheckRadioButton函数时才会出现:
CheckRadioButton (hDlg, idFirst, idLast, idCheck) ;  这个函数将ID在idFirst到idLast之间的所有单选按钮的选中标记都清除掉,除了ID为idCheck的单选按钮,因为它是被选中的。这里,所有ID必须是连续的。从此我们可以完全摆脱循环,并使用:
CheckRadioButton (hDlg, IDC_BLACK, IDC_WHITE, LOWORD (wParam)) ;  这正是ABOUT2对话框程序所采用的方法
原文地址:https://www.cnblogs.com/tianlangshu/p/1989548.html