AfxMessageBox显示在桌面中间

时间:2014-03-28 19:39:36

标签: visual-c++ mfc

我调用AfxMessageBox()函数,期望弹出窗口居中于调用它的MFC对话框。但是,框会以桌面为中心而不是对话框。它的位置并不取决于父对话框的实际位置。什么可以导致这种行为?是否可以将AfxMessageBox移动到所需位置?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用

int WINAPI MessageBox(
  _In_opt_  HWND hWnd,
  _In_opt_  LPCTSTR lpText,
  _In_opt_  LPCTSTR lpCaption,
  _In_      UINT uType
);

并将应用程序窗口的句柄作为第一个参数(HWND)传递。然后它应该居中。

我不再使用MFC,但我认为必须在某处设置主应用程序窗口(InitInstance?),如果没有这样做,AfxMessageBox不会使用应用程序窗口。

答案 1 :(得分:0)

对话框可以在其父窗口中居中。 AfxMessageBox被创建为“系统范围”对话框,这意味着不是应用程序窗口的“子”对话框,这就是为什么它不在父窗口的中心,而是在桌面上。

你不能在创建AfxMessageBox之后移动它,因为它是一个模态对话框(为了移动对话框而创建一个线程的麻烦,可能不值得)。

更好的解决方案就是创建自己的对话功能(如上所述)。然后,当您调用它时,您可以传递调用窗口类(hWnd)的窗口句柄,并且创建的对话框将在您的应用程序窗口中居中,如您所愿。