MFC:有没有办法在没有On_Bn_Clicked()事件的情况下激活按钮?

时间:2014-09-10 12:03:03

标签: button mfc

我有一个隐藏对话框的任务,但我需要单击属于此对话框的按钮 在进入下一个对话框之前执行一些功能。

但是当我隐藏此对话框时,我无法点击该按钮。有没有办法在没有On_Bn_Clicked()事件的情况下实现这个按钮?我的意思是,当调用对话框时,按钮也会被激活。

感谢帮助。

2 个答案:

答案 0 :(得分:1)

单击该按钮时,会发送一些Windows消息。重要的是WM_LBUTTONDOWN,WM_LBUTTONUP,它告诉您单击鼠标左键的按钮。然后一段时间后,WM_COMMAND消息被发送到父窗口以处理按钮单击。此时调用ON_COMMAND()MFC处理程序。在大多数情况下,MFC将这一切都抽象出来。

您可以使用Win32 SendMessage API进行模拟,但如果消息泵阻塞,您的按钮可能不会被点击。如果你想快速回答你的问题,那么这就是“完成它”的方法"。它看起来像这样:

SendMessage(button.GetSafeHwnd(), WM_LBUTTONDOWN, MK_LBUTTON, 0); SendMessage(button.GetSafeHwnd(), WM_LBUTTONUP, MK_LBUTTON, 0);

我认为更合理的方法是获取此On_Bn_Clicked()事件处理程序中的代码,并将其移动到可重用的函数。这样,您就可以从程序中的任何位置调用On_Bn_Clicked()中的代码。

答案 1 :(得分:0)

直接从您的代码中调用On_Bn_Clicked()。这样做没有害处。 (我想你不想用鼠标实际点击隐藏按钮......)