我调用AfxMessageBox()函数,期望弹出窗口居中于调用它的MFC对话框。但是,框会以桌面为中心而不是对话框。它的位置并不取决于父对话框的实际位置。什么可以导致这种行为?是否可以将AfxMessageBox移动到所需位置?谢谢!
答案 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)的窗口句柄,并且创建的对话框将在您的应用程序窗口中居中,如您所愿。