我正在研究MFC应用程序(C ++)
我的复选框有一个事件处理程序映射到ON_BN_CLICKED
。
当用户选中/取消选中该框时,它可以正常工作,即调用事件处理程序。
但是,当我以编程方式选中该框时:((CButton *)this->GetDlgItem(x))-> ->SetCheck(1);
不会调用事件处理程序。
如何以编程方式调用事件处理程序?
答案 0 :(得分:2)
这是正常行为。当“点击”或“用户输入”改变按钮时发送WM_COMMAND。
这与儿童控制不相符。当程序执行SetWindowText时,其他子控件(如编辑控件)也会发送WM_COMMAND EN_CHANGE消息(MFC在DoDataExchange中阻止此消息)。
答案 1 :(得分:2)
this->SendMessage(WM_COMMAND,
MAKELONG(IDC_BUTTON1, BN_CLICKED),
((CButton *)this->GetDlgItem(x))->GetSafeHwnd());