【发布时间】:2011-05-31 19:16:16
【问题描述】:
我有一个相对简单的 Window 类。我创建了一个窗口,关联了我的this,等等。现在,我抛出了一个异常来指示问题。当我调用MessageBox 弹出错误时,程序崩溃,因为它试图调用我的Window Proc。现在,我的意思是,不可否认,我在这里的 SRP 失败了,只需编写一个简短的自有 HWND 类就可以解决这个问题,因为窗口没有正确清理。但是,我真的很困惑为什么它试图在我的MessageBox 调用中处理 Window 消息——所有者参数是nullptr。有什么建议吗?
编辑:如果我适当地调用DestroyWindow,那么现在消息框不会出现,尽管应用程序不会崩溃。它仅在我从窗口中手动删除this 时才有效,因此如果调用了proc,它将转发到DefWindowProc,然后转发到DestroyWindow。我的意思是,我认为如果您在没有所有者的情况下调用 MessageBox,那么无论您对系统中的其他窗口做了什么,它都会正常工作。
【问题讨论】: