1. 模态对话框和非模态对话框的区别 less
Windows中对话框分为模态对话框和非模态对话框。 函数
模态对话框是指当该对话框显示后,会屏蔽其父窗口的操做,只容许操做当前对话框。 spa
如:文本文档中的[打开]对话框 code
非模态对话框是指当该对话框显示后,还能够在其父窗口中进行其余操做。 资源
如:文本文档中的[查找]对话框 文档
2. 模态对话框和非模态对话框建立实例 回调函数
2.1 新建MFC工程,建立一个“基于对话框”的程序,对话框上会自动生成[肯定]和[取消]按钮。 class
2.2 在该工程中,打开“资源视图”,在“Dialog”节点中插入一个对话框,将其ID设为:IDD_DIALOG。 程序
2.3 双击[肯定]按钮,在其回调函数中添加相应程序。 im
建立模态对话框
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