VC++中模态对话框和非模态对话框的编程
- 格式:pdf
- 大小:1.24 MB
- 文档页数:3
VS2010(MFC)编程--几种对话框VS2010/MFC编程:模态对话框及其弹出过程加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有些了解了,有个好的开始对于以后的学习大有裨益。
趁热打铁,这一节讲讲什么是模态对话框和非模态对话框,以及模态对话框怎样弹出。
一.模态对话框和非模态对话框Windows对话框分为两类:模态对话框和非模态对话框。
模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。
非模态对话框则是,它弹出后,本程序其他窗口仍能响应用户输入。
非模态对话框一般用来显示提示信息等。
大家对Windows系统很了解,相信这两种对话框应该都遇到过。
之前的加法计算器对话框其实就是模态对话框。
二.模态对话框是怎样弹出的毕竟加法计算器程序大部分都是MFC自动生成的,对话框怎么弹出来的大家可能还不是很清楚。
下面简单说说它是在哪里弹出来的,再重新建一个新的对话框并弹出它,这样大家实践以后就能更灵活的使用模态对话框了。
大家打开Addition.cpp文件,可以看到CAdditionApp类有个InitInstance()函数,在MFC应用程序框架分析中提到过此函数,不过那是单文档应用程序App类中的,函数体不太相同,但都是进行App类实例的初始化工作。
InitInstance()函数的后半部分有一段代码就是定义对话框对象并弹出对话框的,下面给出这段代码并加以注释:C++代码弹出对话框比较关键的一个函数,就是对话框类的DoModal()函数。
CDialog::DoModal()函数的原型为:virtual INT_PTR DoModal();返回值:整数值,指定了传递给CDialog::EndDialog(该函数用于关闭对话框)的nResult 参数值。
如果函数不能创建对话框,则返回-1;如果出现其它错误,则返回IDABORT。
VCMFC⾮模态对话框的实现⽅法众所周知的,MFC中⾮模态对话框在显⽰后,程序其他窗⼝仍能正常运⾏,可以响应⽤户输⼊,还可以相互切换。
本⽂就来给⼤家讲解⼀下⾮模态对话框的实现⽅法:⼀、⾮模态对话框的对话框资源和对话框类实际上,模态对话框和⾮模态对话框在创建对话框资源和⽣成对话框类上是没有区别的,因此,在创建模态对话框时所创建的IDD_TIP_DIALOG对话框资源和CTipDlg类都不需要修改。
⼆、创建及显⽰⾮模态对话框的步骤需要修改的是,对话框类实例的创建和显⽰,也就是之前在CAdditionDlg::OnBnClickedAddButton()函数体中添加的对话框显⽰代码。
下⾯是具体步骤:1. 在AdditionDlg.h中包含CTipDlg头⽂件并定义CTipDlg类型的指针成员变量。
详细操作⽅法是,在AdditionDlg.cpp中删除之前添加的#include "TipDlg.h",⽽在AdditionDlg.h中添加#include "TipDlg.h",这是因为我们需要在AdditionDlg.h中定义CTipDlg类型的指针变量,所以要先包含它的头⽂件;然后在 AdditionDlg.h中为CAdditionDlg类添加private成员变量CTipDlg *m_pTipDlg;。
2.在CAdditionDlg类的构造函数中初始化成员变量m_pTipDlg。
如果cpp⽂件中函数太多,我们可以在Class View上半个视图中找到CAdditionDlg类,再在下半个视图中找到其构造函数双击,中间客户区域即可马上切到构造函数的实现处。
在构造函数体中添加m_pTipDlg = NULL;,这是个好习惯,在任何指针变量使⽤前都初始化,可以避免因误访问重要内存地址⽽破坏此地址的数据。
3.添加⾮模态对话框的创建和显⽰代码。
VC++中注释单⾏代码使⽤“//”,注释多⾏代码可以在需注释的代码开始处添加“/*”,结束处添加“*/”。
VC显示关闭销毁模态与非模态对话框技巧VC++是一种用于Windows平台开发应用程序的集成开发环境,用于构建图形用户界面和控制应用程序的行为。
在VC++中,对话框是一种常用的用户界面元素,可以用于显示和获取用户输入。
在使用对话框时,要注意对话框的显示、关闭和销毁。
1.显示对话框在VC++中,显示一个对话框可以通过以下几种方式实现:a. 使用DoModal函数DoModal函数是CDialog类的一个成员函数,用于显示对话框,并返回对话框的返回值。
例如,可以使用下面的代码显示一个对话框:CMyDialog dlg;dlg.DoModal(;b. 使用Create函数Create函数是CDialog类的另一个成员函数,用于创建对话框,并显示它。
使用Create函数时,需要先调用Create函数创建对话框,然后调用ShowWindow函数显示对话框。
以下是使用Create函数显示对话框的示例代码:CMyDialog dlg;dlg.Create(IDD_MYDIALOG);dlg.ShowWindow(SW_SHOW);c.使用模态对话框模态对话框是一种阻塞式对话框,显示模态对话框时,在对话框关闭之前,用户无法与其他应用程序进行交互。
要显示一个模态对话框,可以通过调用DoModal函数,并传递对话框的资源ID来实现。
以下是使用模态对话框的示例代码:CMyDialog dlg;INT_PTR nResponse = dlg.DoModal(;2.关闭对话框在VC++中,可以使用以下几种方式关闭对话框:a. 使用EndDialog函数EndDialog函数是CDialog类的一个成员函数,用于关闭对话框,并返回对话框的返回值。
以下是使用EndDialog函数关闭对话框的示例代码:OnOKEndDialog(IDOK);b.使用DestroyWindow函数DestroyWindow函数是CWnd类的一个成员函数,用于销毁窗口,并关闭对话框。