发送Windows消息的消息框
Message Box sending Windows messages?
我有一个相对简单的Window类。我创建了一个窗口,关联了我的this
等。现在,我抛出了一个异常来指示问题。当我调用MessageBox
弹出错误时,程序崩溃,因为它正试图调用我的Window Proc。现在,我的意思是,无可否认,我在这里没有通过SRP,只写一个简短的自拥有HWND类就可以解决这个问题,因为窗口没有被正确清理。然而,我真的很困惑,为什么它试图在我的MessageBox
调用中处理Window消息——owner参数是nullptr
。有什么建议吗?
编辑:如果我适当地调用DestroyWindow
,那么现在消息框就不会出现,尽管应用程序不会崩溃。只有当我手动从窗口中删除this
时,它才起作用,这样,如果调用proc,它就会转发到DefWindowProc
,然后再转发DestroyWindow
。我的意思是,我认为如果您在没有所有者的情况下调用MessageBox
,那么无论您对系统中的其他窗口做了什么,它都会正常工作。
这里发生的情况是,当您显示消息框时,队列中仍有针对dud窗口的消息。消息框运行一个模式窗口消息泵,并分派有问题的消息。请记住,从同一线程创建的所有窗口都共享一个消息队列。
我不知道如何解决你的问题,但这就是发生的事情。
顺便说一句,传递一个空所有者并不是一个好主意,因为例如,当你的主应用程序最小化时,它会导致你的消息框没有最小化。
相关文章:
- 如何使用阻止套接字 API 添加消息发送操作 (smtp) 的进度?
- 将ROS消息发送和收回到非ROS机器
- 如何在C++中将消息发送到 Azure IOT 中心
- 如何在OMNET++中收到来自前一个模块的所有消息后将一条消息发送到下一个模块
- 如何将消息发送到缓冲区并反向打印前三个单词的消息
- 树莓派QDBus错误:无法将消息发送到服务
- 将消息发送到文本框窗口子级C++不起作用
- 需要API将日志消息发送到服务器
- C++套接字客户端/服务器简单消息发送器
- 如何将 UDP 消息发送到局域网中的每台计算机
- 将窗口消息发送到控制台应用程序
- 多次分叉后无法将消息发送到父进程
- 在 omnet 中将函数作为消息发送
- 将消息发送到窗口句柄
- WINAPI 将消息发送到特定区域中的 hWnd
- 将多个 UDP 消息发送到单个修订者
- 拔下/切换扩展显示器时是否有消息发送到应用程序窗口
- 如何使用WinAPI将消息发送到Internet Explorer 9
- MFC将消息发送到MAIN线程(而不是窗口)
- 如何使用C++和Windows API将击键/消息发送到Windows 7