所谓模态对话框就是该对话框被创建后,其父窗口不能响应任何消息,无法操作,只有在关闭了新创建出来的窗口后才能继续操作其后面的父窗口。而非模态对话框则不会有这种情况,非模态对话框创建完成后不影响父窗口的操作,两个窗口可以同时响应消息。


创建模态对话框

想创建一个模态对话框一共分三步。 1、在资源视图中创建一个对话框资源 2015-07-31_190223 2、给该对话框资源创建一个类,继承于 CDialog 类,命名为 CMyDialog 2015-07-31_191418 3、在想创建该对话框的地方添加如下代码  

// 模态对话框
CMyDialog dialog;
dialog.DoModal();

这样一个模态对话框就创建好了,在这个对话框中,你还可以添加其他控件,对每个控件做消息响应,这些消息响应函数会写在你创建的 CMyDialog 类中的。

创建非模态对话框

创建非模态对话框相对简单,我们可以不需要自己派生一个 CDialog 的子类再调用子类的 DoModal(这个函数是模态对话框使用的),如果我们已经在资源视图创建好了对话框资源,那么直接使用如下代码就可以创建一个非模态的对话框。

// 非模态
CDialog* dialog = new CDialog;// new 一个对话框对象
dialog->Create(IDD_MYDIALOG, this);// 初始化对话框和我们的对话框资源绑定
dialog->ShowWindow(SW_SHOWNORMAL);// 显示对话框