在MFC中,点击触发按钮,动态创建一个非模态对话框。然而如果多次点击触发按钮却可以显示多个同样的非模态对话框,不便于使用。因此在程序中,显示非模态对话框前,需要先检验该对话框是否存在,若不存在,则创建该对话框,否则显示当前对话框。
方法如下:
CDialog dlg;
if(dlg.m_hWnd){
dlg.SetActiveWindow();
}else{
dlg.Create(IDD_DIALOG1,GetDesktopWindow());
dlg.SetWindowText("非模态对话框");
dlg.ShowWindow(SW_SHOWNORMAL);
}
这样可以保证一个非模态对话框只能被显示一个窗口。
另外,还可以在对话框类中定义一个bool变量显示该对话框是否已被创建,原理与上述代码相同。