【发布时间】:2012-03-05 00:24:40
【问题描述】:
在我的应用程序的主视图中,我创建了一个无模式对话框,即:
CMyDialog dlg;
int returnval = dlg.doModal();
这是我第一次遇到这种情况,但在这个特定的对话框中,如果我想在按下按钮时显示一个消息框,它总是出现在对话框后面。如果我按键盘上的 alt 键,它就会获得焦点并出现在前面。
int nResult = AfxMessageBox(_T("Are you sure you want to delete this file?"), MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND | MB_TOPMOST | MB_TASKMODAL);
if(nResult == IDNO){
return;
}
else{
...
}
我想知道我做了什么或检查了哪些选项会导致这种行为?
编辑:这是我的 OnInitDialog 函数中的一小部分代码,我注释掉了所有其余部分,并且保持相同的行为:
CDialog::OnInitDialog();
DEVMODE sDevMode;
ZeroMemory(&sDevMode, sizeof(DEVMODE));
sDevMode.dmSize = sizeof(DEVMODE);
EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&sDevMode);
_screenw = (int)sDevMode.dmPelsWidth;
_screenh = (int)sDevMode.dmPelsHeight;
_dlgx = (int) 50;
_dlgy = (int) 50;
_dlgw = (int) _screenw-100;
_dlgh = (int) _screenh-100;
this->MoveWindow(_dlgx,_dlgy,_dlgw,_dlgh);
【问题讨论】:
-
您是否尝试过使用
CMyDialog类的MessageBox()函数?AfxMessageBox()和CWnd::MessageBox()的不同之处在于提供给底层MessageBox()Win32API 函数的HWND参数。 -
奇怪,您是否在对话框初始化函数中设置了任何扩展窗口样式?也许玩 Z-Order?
-
看看我的编辑,里面几乎什么都没有。
-
你能显示你的
MessageBox()正在显示的功能吗? -
我在对话框中添加了一个按钮,然后单击添加事件处理程序,该函数中使用的唯一代码就是我发布的代码。正如我在另一个回复中所说,我将只做一个新对话框,确保消息框看起来很好,然后复制粘贴我放在那里的其他内容。这不是很多工作。它只是让我感到困惑为什么会发生..
标签: c++ mfc modal-dialog