我有一个多线程应用程序,可以显示MessageBox以供用户进行交互。在用户从应用程序的系统托盘图标中选择上下文菜单命令后,消息框本身将显示在工作线程中,因此用户可以在显示消息框时在技术上继续使用该应用程序。这很好用,直到用户发出“退出”命令,此时我需要找到一种方法来关闭任何打开的消息框。
我完成了我的作业,并且能够获得消息框(using this method)的主(对话框)窗口的HWND句柄。)我使用Spy ++检查了HWND是否正确,因此HWND本身不是问题。当我从另一个线程到消息框执行PostMessage(hMsgBoxWnd, WM_CLOSE, 0, 0);
时,它会忽略此消息并且不会关闭。
知道如何通过窗口句柄关闭消息框吗?
答案 0 :(得分:1)
MessageBox()
根本不会在所有情况下处理WM_CLOSE
:
SendMessage/PostMessage WM_CLOSE to MessageBox window does not always work
答案 1 :(得分:0)
您应该使用PostThreadMessage发布到线程特定的消息队列