一、非模态对话框:创建后,主程序还可以运行。
创建步骤如下:
1.1先建立一个基本对话框MFC工程,在资源列表添加一个对话框资源
1.2将创建的对话框修改名字和ID,比如将ID名为:IDD_TIP_DIALOG
1.3给对话框添加一个类,类名称为:TipDlg。(注意:TipDlg类的基类为CDialog)
则在解决方案列表可以看到创建了一个TipDlg.h和TipDlg.cpp文件。
1.4在主对话框头文件添加一个虚函数和定义指向TipDlg类的指针,源文件添加delete TipDlg程序,用来注销资源。
//*****头文件******
virtual~CMainPro1Dlg();//创建虚函数,类退出后,自动释放非模态对话框资源
private:
TipDlg *pTipDlg;
//*********源文件***************
1.5在主对话框添加一个Test按钮,并且双击,在其内添加如下程序
TipDlg *pTipDlg = new TipDlg();//对指针进行初始化
pTipDlg->Create(IDD_TIP_DIALOG, this);
pTipDlg->ShowWindow(SW_SHOW);
1.6创建对话框完成,执行程序,如下。
总结:主要步骤是,创建新对话框后,关联一个类,然后用一个指针指向该类;接着用该指针创建对话框和显示对话框,最后在虚构函数中销毁该指针,释放资源。即:
TipDlg *pTipDlg = new TipDlg();//对指针进行初始化
pTipDlg->Create(IDD_TIP_DIALOG, this);
pTipDlg->ShowWindow(SW_SHOW);
deletepTipDlg;//在析构函数中写入
二、模态对话框:程序执行时,只能运行该对话框,直到对话框程序执行完毕后,才能再次执行主对话框。
模态对话框的创建和使用跟非模态对话框类似,其步骤如下:
2.1按照非模态对话框1.1到1.4的步骤创建好对话框和关联类。
2.2在主界面添加一个按钮,并且添加事件处理函数
2.3在该按钮添加如下代码:
TipDlg pdlg;
pdlg.DoModal();
2.4运行执行程序,得到如下结果。
总结:模态对话框的函数代码为:
TipDlg pdlg;
pdlg.DoModal();
三、非模态对话框和模态对话框用法总结
3.1相同点:两者添加对话框资源和关联类的操作步骤是一样的。
3.2不同点:两者创建和显示的函数不一样。
3.2.1非模态对话框创建和显示函数
TipDlg *pTipDlg = new TipDlg();//对指针进行初始化
pTipDlg->Create(IDD_TIP_DIALOG, this);
pTipDlg->ShowWindow(SW_SHOW);
3.2.2模态对话框创建和显示函数
TipDlg pdlg;
pdlg.DoModal();