在 MFC 应用程序中以编程方式调用事件处理程序

Calling the event handler programmatically in an MFC application

我正在开发 MFC 应用程序 (C++)

我的复选框有一个映射到 ON_BN_CLICKED 的事件处理程序。 当用户 check/uncheck 框,即调用事件处理程序时,它工作正常。

但是,当我以编程方式选中该框时:((CButton *)this->GetDlgItem(x))-> ->SetCheck(1); 不会调用事件处理程序。

我应该怎么做才能以编程方式调用事件处理程序?

这是正常现象。当 "click" 或 "user entry" 更改按钮时发送 WM_COMMAND。

这与子控件不相关。当程序执行 SetWindowText 时,其他子控件(如编辑控件)也会发送 WM_COMMAND EN_CHANGE 消息(MFC 在 DoDataExchange 中阻止此消息)。

尝试send BN_CLICKED:

this->SendMessage(WM_COMMAND, 
MAKELONG(IDC_BUTTON1, BN_CLICKED), 
((CButton *)this->GetDlgItem(x))->GetSafeHwnd());