非模态对话框和模态对话框_创建

一、非模态对话框:创建后,主程序还可以运行。

创建步骤如下:

1.1先建立一个基本对话框MFC工程,在资源列表添加一个对话框资源

非模态对话框和模态对话框_创建_第1张图片非模态对话框和模态对话框_创建_第2张图片

1.2将创建的对话框修改名字和ID,比如将ID名为:IDD_TIP_DIALOG

 非模态对话框和模态对话框_创建_第3张图片

非模态对话框和模态对话框_创建_第4张图片非模态对话框和模态对话框_创建_第5张图片

1.3给对话框添加一个类,类名称为:TipDlg。(注意:TipDlg类的基类为CDialog)

则在解决方案列表可以看到创建了一个TipDlg.h和TipDlg.cpp文件。

 非模态对话框和模态对话框_创建_第6张图片

非模态对话框和模态对话框_创建_第7张图片

 

1.4在主对话框头文件添加一个虚函数和定义指向TipDlg类的指针,源文件添加delete TipDlg程序,用来注销资源。

//*****头文件******

virtual~CMainPro1Dlg();//创建虚函数,类退出后,自动释放非模态对话框资源

private:

   TipDlg *pTipDlg;

 

 非模态对话框和模态对话框_创建_第8张图片

 

//*********源文件***************

 非模态对话框和模态对话框_创建_第9张图片

1.5在主对话框添加一个Test按钮,并且双击,在其内添加如下程序

非模态对话框和模态对话框_创建_第10张图片

非模态对话框和模态对话框_创建_第11张图片

TipDlg *pTipDlg = new TipDlg();//对指针进行初始化

   pTipDlg->Create(IDD_TIP_DIALOG, this);

   pTipDlg->ShowWindow(SW_SHOW);

 

1.6创建对话框完成,执行程序,如下。

 非模态对话框和模态对话框_创建_第12张图片

总结:主要步骤是,创建新对话框后,关联一个类,然后用一个指针指向该类;接着用该指针创建对话框和显示对话框,最后在虚构函数中销毁该指针,释放资源。即:

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();

 非模态对话框和模态对话框_创建_第13张图片

非模态对话框和模态对话框_创建_第14张图片


2.4运行执行程序,得到如下结果。

 非模态对话框和模态对话框_创建_第15张图片

总结:模态对话框的函数代码为:

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();

 

你可能感兴趣的:(MFC积累)