消息框发送Windows消息?

时间:2011-05-31 19:16:17

标签: c++ winapi windows-7

我有一个相对简单的Window类。我创建了一个窗口,关联了我的this等等。现在稍后,我抛出一个异常来表示问题。当我调用MessageBox弹出错误时,程序崩溃了,因为它试图调用我的Window Proc。现在,我的意思是,诚然,我在这里失败了SRP,只是编写一个简短的自有HWND类将解决这个问题,因为窗口没有正确清理。但是,我真的很神秘,为什么它试图在MessageBox调用中处理Window消息 - 所有者参数是nullptr。有什么建议吗?

编辑:如果我恰当地调用DestroyWindow,那么现在消息框不会显示,尽管应用程序不会崩溃。它仅在我从窗口中手动删除this时才有效,因此如果调用了proc,它将转发到DefWindowProc,然后转移到DestroyWindow。我的意思是,我认为如果你在没有拥有者的情况下调用MessageBox,那么无论你对系统中的其他窗口做了什么,它都会起作用。

1 个答案:

答案 0 :(得分:4)

这里发生的事情是,当您显示消息框时,队列中的dud窗口仍然有消息。消息框运行模态窗口消息泵并调度麻烦的消息。请记住,从同一个线程创建的所有窗口共享一个消息队列。

我不知道如何解决你的问题,但那是怎么回事。

顺便说一下,传递一个空的所有者并不是一个好主意,因为当你的主应用程序被最小化时,它会导致你的消息框没有被最小化。例如。