我正在开发一个MDI应用程序,主要文档在MDI框架中最大化。我创建了一个非模态对话框弹出窗口,以便在用户在主窗口中工作时向用户显示辅助信息。但是,当用户移动弹出窗口时,它会获得预期的焦点。当此窗口具有焦点并且在大型机中发生生成AfxMessageBox的事件时,会发生此问题。我希望AfxMessageBox以大型机为中心弹出。目前,它以非模态对话框弹出窗口为中心弹出窗口,当时该窗口很可能是焦点。
有没有办法强制AfxMessageBox始终以大型机为中心弹出?或者至少强制它以调用它的窗口为中心弹出。例如,如果在我的非模态对话框中发生错误,我希望AfxMessageBox以该对话框为中心显示,因为它直观地发生了错误。或者,如果我正在使用非模态对话框并且在大型机或文档中发生错误,那么我希望AfxMessageBox显示在其视图/框架的中心,尽管事实上我正在使用子窗口。
我希望这很清楚。
答案 0 :(得分:3)
改为使用CWnd :: MessageBox()方法。
答案 1 :(得分:3)
继续使用AfxMessageBox
,但覆盖CWinApp子类的DoMessageBox。在您的覆盖中,执行您想要使用::MessageBox()
向用户显示消息框甚至显示自定义对话框的任何内容。这样可以避免在源代码文件中替换对AfxMessageBox
的调用。
答案 2 :(得分:0)
你可以使用标准:: MessageBox,第一个(父)参数等于NULL。 在这种情况下,桌面将用作父级,因此它将以屏幕为中心。