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

时间:2015-07-27 12:35:26

标签: c++ mfc event-handling

我正在研究MFC应用程序(C ++)

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

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

如何以编程方式调用事件处理程序?

2 个答案:

答案 0 :(得分:2)

这是正常行为。当“点击”或“用户输入”改变按钮时发送WM_COMMAND。

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

答案 1 :(得分:2)

尝试send BN_CLICKED

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