如何通过C ++的句柄关闭MessageBox窗口

时间:2012-12-14 04:11:14

标签: c++ windows winapi messagebox

我有一个多线程应用程序,可以显示MessageBox以供用户进行交互。在用户从应用程序的系统托盘图标中选择上下文菜单命令后,消息框本身将显示在工作线程中,因此用户可以在显示消息框时在技术上继续使用该应用程序。这很好用,直到用户发出“退出”命令,此时我需要找到一种方法来关闭任何打开的消息框。

我完成了我的作业,并且能够获得消息框(using this method)的主(对话框)窗口的HWND句柄。)我使用Spy ++检查了HWND是否正确,因此HWND本身不是问题。当我从另一个线程到消息框执行PostMessage(hMsgBoxWnd, WM_CLOSE, 0, 0);时,它会忽略此消息并且不会关闭。

知道如何通过窗口句柄关闭消息框吗?

2 个答案:

答案 0 :(得分:1)

MessageBox()根本不会在所有情况下处理WM_CLOSE

SendMessage/PostMessage WM_CLOSE to MessageBox window does not always work

答案 1 :(得分:0)

您应该使用PostThreadMessage发布到线程特定的消息队列