一般情况下用发消息模拟点击窗口上的某个button可以这样做:
PostMessage(WM_COMMAND, MAKEWPARAM(buttonId, BN_CLICKED), LPARAM(GetDlgItem(buttonId )));
但如果要模拟点击OK按钮 (使用了DefaultPushButton Style)时,用以上的方法并不管用。
解决办法:
先让OK Button获取Focus再发送WM_COMMAND Message。
CWnd* pOkButton = GetDlgItem(IDOK);
pOkButton->SetFocus();
PostMessage(WM_COMMAND, MAKEWPARAM(IDOK, BN_CLICKED), LPARAM(GetDlgItem(IDOK)));
Cancel Button无此问题。