C++ 以编程方式单击模态窗口父级中的工具栏按钮

C++ 以编程方式单击模态窗口父级中的工具栏按钮,c++,winapi,C++,Winapi,我有一个应用程序,它通过API与另一个应用程序挂钩。我的应用程序启动了一个模式窗口,它可以防止按键按到预期的父级 但是,由于API的限制,我需要不时单击父工具栏按钮之一。是的,这是一个难题 我想知道在我的应用程序的模式窗口仍然处于活动状态时,这是否可能?是否可以将所需命令直接发送到父命令队列 在没有模式窗口的情况下以编程方式单击按钮应该不是问题,可以通过以下链接进行操作,例如:。但我不希望每次点击按钮时都关闭窗口 虽然第五个答案是我觉得有趣的,因为我认为这可以使发送命令而不必先关闭模态窗口。此外

我有一个应用程序,它通过API与另一个应用程序挂钩。我的应用程序启动了一个模式窗口,它可以防止按键按到预期的父级

但是,由于API的限制,我需要不时单击父工具栏按钮之一。是的,这是一个难题

我想知道在我的应用程序的模式窗口仍然处于活动状态时,这是否可能?是否可以将所需命令直接发送到父命令队列

在没有模式窗口的情况下以编程方式单击按钮应该不是问题,可以通过以下链接进行操作,例如:。但我不希望每次点击按钮时都关闭窗口


虽然第五个答案是我觉得有趣的,因为我认为这可以使发送命令而不必先关闭模态窗口。此外,它还感觉不那么难看。

首先,当显示模式对话框时,它运行自己的消息泵。因此,任何伪造输入消息的尝试都会出现在模式对话框消息泵中。这对你没有好处。因此,您必须发送消息,而不是伪造输入

但是,当显示模式对话框时,其所属窗口将被禁用。这意味着这些窗口不会响应您发送的任何消息。所以我想这意味着你可以:

启用托管相关工具栏的顶级窗口。 将消息发送到工具栏按钮。 再次禁用所属窗口。
这不是最漂亮的方式,但你问过了

事实上,我会尝试发送WM_CLICK或类似的消息。。。我不记得模态是否会阻止它被处理。但是,您的工具栏按钮是单个控件还是单个控件,因此根据分辨率、字体大小等确定单击的正确位置时可能会出现问题?人们可能每次都必须通过ID来定位它们,因为无法保证它们不会在工具栏中移动。