Windows程序设计教程 第2版 教学课件 ppt 作者 王秀梅 第10章-对话框

上传人:E**** 文档编号:89400648 上传时间:2019-05-24 格式:PPT 页数:88 大小:1.44MB
返回 下载 相关 举报
Windows程序设计教程 第2版  教学课件 ppt 作者  王秀梅 第10章-对话框_第1页
第1页 / 共88页
Windows程序设计教程 第2版  教学课件 ppt 作者  王秀梅 第10章-对话框_第2页
第2页 / 共88页
Windows程序设计教程 第2版  教学课件 ppt 作者  王秀梅 第10章-对话框_第3页
第3页 / 共88页
Windows程序设计教程 第2版  教学课件 ppt 作者  王秀梅 第10章-对话框_第4页
第4页 / 共88页
Windows程序设计教程 第2版  教学课件 ppt 作者  王秀梅 第10章-对话框_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《Windows程序设计教程 第2版 教学课件 ppt 作者 王秀梅 第10章-对话框》由会员分享,可在线阅读,更多相关《Windows程序设计教程 第2版 教学课件 ppt 作者 王秀梅 第10章-对话框(88页珍藏版)》请在金锄头文库上搜索。

1、,对话框作为Windows程序的一种资源,发挥着人机交互的重要作用。 因此,对话框在应用程序开发过程中有着不可替代的作用。 对话框一般作为其他控件的载体,其正是通过这些控件的输入输出完成了人机交互。 下面对对话框的相关知识进行详细介绍。,10.1 对话框的基础知识,想要创建基于对话框的MFC应用程序,首先需要了解对话框的基本知识点。 下面将简单介绍对话框的基础知识。,10.1.1 对话框概述,在MFC中,提供了一系列的对话框类,主要包括CDialog类及其派生类,如表10.1所示。,10.1.2 对话框分类,对话框分为两种:模态对话框和非模态对话框。,1模态对话框,当一个模态对话框工作时,其他

2、窗口将失去输入焦点。 只有当该模态对话框关闭后,用户才能对其他窗口进行操作。 例如,Microsoft Word中对图片进行操作时的【题注】对话框、【设置图片格式】对话框和【插入超链接】对话框都是模态对话框,如图10.1所示。,图10.1 【设置图片格式】对话框,2非模态对话框,非模态对话框与模态对话框相反。 当其工作时,点击其他窗口,被点击的窗口可以获得输入焦点。 例如,Microsoft Word中常用的【查找和替换】对话框,就是非模态对话框,如图10.2所示。,模态对话框与非模态对话框的区别如下: (1)模态对话框由CDialog:DoModal()函数创建,而非模态对话框由CDialo

3、g:Create()函数来创建;,图10.2 【查找和替换】对话框,(2)CDialog:DoModal()函数负责显示其所创建的模态对话框,而非模态对话框需要调用CDialog:ShowWindow()函数来显示对话框;,(3)CDialog:DoModal()函数负责销毁其所创建的模态对话框,而非模态对话框必须调用CWnd:DestoryWindow()函数来关闭对话框。,10.2 消息对话框,消息对话框是最常用的对话框。 通过消息对话框,可以传递用户的选择,输出提示、警告和错误等类型的信息。 下面对消息对话框进行详细介绍。,10.2.1 消息对话框概述,通过调用MessageBox()函

4、数即可弹出一个消息对话框。,MessageBox()函数的原型如下: Int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR IpCaption, UINT UType );,10.2.2 消息对话框样式,在MessageBox()函数的参数UType中,可以设置对话框的样式。 如果向该参数传递多个数据,可以用“”进行分隔。 消息对话框中图标的类型及其对应的参数如表10.3所示。,消息对话框中按钮的类型及其对应的说明如表10.4所示。,图10.3 【请确认】消息对话框,图10.4 默认选择【取消】按钮,10.2.3 消息对话框的返回值,当选择消息对

5、话框中的按钮后,MessageBox()函数会返回一个int值。 该返回值及其含义如表10.6所示。,10.3 模态对话框,当模态对话框处于显示状态时,用户不能在对话框与同一个程序中的其他窗口之间进行切换,使用者必须首先关闭该对话框。 下面将介绍创建并使用模态对话框时需要用到的知识点。,10.3.1 创建模态对话框,在前面已经介绍过如何创建一个基于对话框的MFC应用程序。 下面将介绍如何为一个应用程序添加另外的对话框。,10.5 【Insert Resource】对话框,图10.6 【Resource View】视图,图10.7 【Dialog Properties】对话框,图10.8 设计对

6、话框资源,10.3.2 创建对话框类,在上一节的操作中,只是创建了一个对话框的模板。 但想要使用该对话框,就要为其添加相应的MFC类。 下面将介绍如何为对话框资源添加相应的类。,图10.9 【Adding a Class】对话框,图10.10 【New Class】对话框,图10.11 【MFC ClassWizard】对话框,图10.12 【Member Variables】选项卡,图10.13 【Add Member Variables】对话框,图10.14 查看控件对应的成员变量,10.3.3 添加程序代码,在应用程序的原有对话框中弹出刚刚创建的对话框。 要想实现这一过程,需要为主对话框

7、的【确定】按钮添加消息响应函数。,图10.15 添加消息响应函数,1构造CCompareDlg类的对象,在上述操作步骤中,首先要构造一个【比较大小】对话框CCompareDlg类的对象。,2创建对话框,构造完CCompare类的一个对象后,调用的是DoModal()函数。 DoModal()函数调用的是CDialog类的虚函数,而在CCompare类并没有重载它,因此是该对象继承于基类中的函数。,3创建过程分析,首先讨论CreateDlgIndirect()函数。 此函数用来创建对话框,当然它也是通过间接地调用其他函数,从而完成对话框的创建工作。,4初始化对话框,在调用CreateDialog

8、IndirectParam()函数时,将会产生消息WM_INITDIALOG。 此消息将会引起对CDialog:OnInitDialog()函数的调用,而CDialog:OnInitDialog是虚函数。 因此,实际上调用的是基类的实现。,5对话框过程,在调用:CreateDialogIndirect宏时,使用的最后一个参数类型是DLGPROC(对话框过程的指针)。,这里将对话框过程与窗口过程作以简单的比较: (1)窗口过程返回的数据类型为LRESULT,此类型实际为LONG型,用于消息处理后所返回的结果,而对话框过程返回BOOL类型;,(2)如果窗口过程不处理某个特定的消息,那么它将调用Af

9、xWndProc乃至DefWindowProc;如果对话框过程不处理该消息,那么它将返回FALSE;如果处理了该消息,那么它将返回TRUE;,(3)对话框过程无须处理WM_PAINT或WM_DESTROY消息,也不接收WM_CREAT消息,而是在对WM_INITDIALOG消息响应期间,执行对话框的初始化操作。,10.3.4 模态对话框消息循环,在前面的章节中,曾经详细地讨论过单文档应用的消息循环,而模态对话框也有自己的消息循环过程,这是它区别于非模态对话框的一个重要标志。 本节将围绕模态对话框的消息循环过程进行讲解。,在DoModal调用中,完成对话框创建任务后,即对RunModalLoop

10、()函数进行调用,而此函数正是消息循环机构所在处,它是CWnd的成员函数,但被CDialog类继承。,1空闲阶段 2消息处理阶段,10.3.5 模态的终结,这一小节主要讨论模态的正常结束,即通常按下【确定】或者【取消】按钮时,MFC内部所做的操作。 首先来看一下前者,对【确定】按钮的默认处理是CDialog:OnOK,此函数为虚函数,因为没有重载它,因此调用基类的实现。,其定义如下: void CDialog:OnOK() if (!UpdateData(TRUE) TRACE0(“UpdateData failed during dialog termination.n“); / the U

11、pdateData routine will set focus to correct item return; EndDialog(IDOK); ,其次,再看看按下【取消】按钮时,MFC的动作如何?对【取消】按钮的默认处理是CDialog:OnCancel()函数,此函数为虚函数,因为没有重载它,因此调用基类的实现,其定义如下: void CDialog:OnCancel() EndDialog(IDCANCEL); ,10.4 非模态对话框,创建非模态对话框与创建模态对话框的方式不同。 模态对话框通过DoModal()函数来创建,而非模态对话框通过Create()函数来创建。,非模态对话框

12、的一个重要作用就是传递数据。 也就是说,将非模态对话框中的数据及时地反应到其他窗口。,10.4.1 创建非模态对话框,图10.16 设计对话框资源,图10.17 添加对话框类,10.4.2 创建过程分析,1构造CPostMessageDlg类的对象 2创建对话框 创建非模态对话框时调用的是Create()函数,该函数的原型如下:,virtual BOOL Create( LPCTSTR lpszTemplateName, CWnd* = NULL ); virtual BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );,3显示非模

13、态对话框,10.5 通用对话框,通用对话框是指在Windows程序中有着特定功能的对话框。 用户不必设计这类对话框,因为Windows系统本身提供了支持这类对话框的函数。 通过调用这些函数,可以启动标准对话框来进行文件的打开和保存、搜索和替换、颜色选择、字体选择以及打印。,10.5.1 颜色通用对话框,颜色通用对话框(CColorDialog)是帮助用户设置颜色的,如图10.18所示。,10.18 【颜色】通用对话框,CColorDialog类的构造函数原型如下: CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pPar

14、entWnd = NULL );,10.5.2 字体通用对话框,CFontDialog类的构造函数原型如下: CFontDialog( LPLOGFONT lplfInitial = NULL, DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS, CDC* pdcPrinter = NULL, CWnd* pParentWnd = NULL );,10.19 【字体】对话框,10.5.3 定制打开文件通用对话框,文件通用对话框(CFileDialog)可以实现Windows标准的打开和保存文件。 也就是说,文件通用对话框包括两种:【打开】对话框,用于打开文

15、件,如图10.20所示;【保存】对话框,用于保存文件,如图10.21所示。,图10.20 【打开】对话框,图10.21 【保存】对话框,CFileDialog类的构造函数原型如下: CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );,10.5.4 查找和

16、替换通用对话框,查找和替换通用对话框是CFindReplaceDialog类实现的。 这两个对话框是通用对话框中比较特殊的两个,因为它们是非模态对话框。 【查找】对话框如图10.22所示,【替换】对话框如图10.23所示。,图10.22 【查找】对话框,图10.23 【替换】对话框,CFindReplaceDialog类中Create函数的原型如下: BOOL Create( BOOL bFindDialogOnly, LPCTSTR lpszFindWhat, LPCTSTR lpszReplaceWhat=NULL, DWORD dwFlag=FR_DOWN, CWnd* pParentWnd=NULL );,10.5.5 打印通用对话框,打印通用对话框(CPrintDialog)有两种功能。 它既可以实现Windows标准的【打印】对话框,如图10.24所示,还可以实现【打印设置】对话框,如图10.25所示。,CPrintDialog类的构造函数原型如下: CPrintDialog(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号