模态对话框与非模态对话框的区别

 

1. 模态对话框和非模态对话框的区别

Windows中对话框分为模态对话框和非模态对话框。

模态对话框是指当该对话框显示后,会屏蔽其父窗口的操作,只允许操作当前对话框。

如:文本文档中的[打开]对话框

模态对话框与非模态对话框的区别_第1张图片

非模态对话框是指当该对话框显示后,还可以在其父窗口中进行其他操作。

如:文本文档中的[查找]对话框

模态对话框与非模态对话框的区别_第2张图片

2. 模态对话框和非模态对话框创建实例

2.1 新建MFC工程,创建一个“基于对话框”的程序,对话框上会自动生成[确定][取消]按钮。

模态对话框与非模态对话框的区别_第3张图片

2.2 在该工程中,打开“资源视图”,在“Dialog”节点中插入一个对话框,将其ID设为:IDD_DIALOG

2.3 双击[确定]按钮,在其回调函数中添加相应程序。

创建模态对话框

void CMfcDialogDlg::OnBnClickedOk()
{
       ModalDialog *myModalDialog=new ModalDialog;
       myModalDialog->DoModal();
}

创建非模态对话框

void CMfcDialogDlg::OnBnClickedOk()
{
       CDialog *dlg=new CDialog;
       dlg->Create(IDD_DIALOG);
       dlg->ShowWindow(SW_SHOW);
}

另:

”令其父窗口无效,直到对话框结束“------Modal对话框

”父窗口与对话框共同运行“------Modeless对话框

摘自:《深入浅出MFC》P27

你可能感兴趣的:(模态对话框,非模态对话框)