我有一个相对简单的窗口类。我已经创建了一个窗口,关联了我的this,等等。现在,我抛出了一个异常来指出一个问题。当我调用MessageBox弹出错误时,程序崩溃了,因为它试图调用我的Window Proc。现在,我的意思是,无可否认,我在这里没有通过SRP,只需编写一个简短的自有HWND类就可以解决这个问题,因为窗口没有被正确清理。然而,我真的很困惑为什么它要在我的MessageBox调用中处理窗口消息--所有者参数是nullptr。有什么建议吗?
编辑:如果我适当地调用DestroyWindow,那么现在消息框就不会出现,尽管应用程序不会崩溃。只有当我手动从窗口中删除this时,它才能起作用,这样,如果调用proc,它会先转发到DefWindowProc,然后再转发到DestroyWindow。我的意思是,我认为如果你在没有所有者的情况下调用MessageBox,那么它就会正常工作,而不管你对系统中的其他窗口做了什么。
发布于 2011-06-01 03:40:34
这里发生的情况是,当您显示消息框时,队列中仍有用于无效窗口的消息。消息框运行模式窗口消息泵并分派麻烦的消息。请记住,从同一线程创建的所有窗口共享一个消息队列。
我不知道如何解决你的问题,但这就是发生的事情。
顺便说一下,传递一个null所有者并不是一个好主意,例如,当你的主应用程序被最小化时,它会导致你的消息框不会最小化。
https://stackoverflow.com/questions/6192418
复制相似问题