(中职)Visual C++程序设计基础(中职)Flash 8.0基础第8章 对话框和基本控件ppt课件.ppt
-
资源ID:71823249
资源大小:147.50KB
全文页数:24页
- 资源格式: PPT
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
(中职)Visual C++程序设计基础(中职)Flash 8.0基础第8章 对话框和基本控件ppt课件.ppt
(中职)Visual C+程序设计基础(中职)Flash 8.0基础第8章 对话框和基本控件ppt课件第第8章章 对话框和基本控件对话框和基本控件8.1 Windows编程与编程与MFC8.2 对话框与常用控件概述对话框与常用控件概述8.3 与用户交互的基于对话框的与用户交互的基于对话框的MFC应用程序应用程序8.4 多对话框应用程序多对话框应用程序 8.1 Windows编程与编程与MFC 在在 Visual C+中中 开开 发发 面面 向向 对对 象象 的的Windows应应用用程程序序有有两两种种主主要要方方法法:一一种种是是 使使 用用 Windows提提 供供 的的 Windows API(Application Programming Interface,应应用用程程序序接接口口)函函数数,另另一一种种是利用是利用Microsoft提供的基础类库提供的基础类库MFC。8.1.1 Windows编程编程1Windows应用程序接口应用程序接口API 应用程序接口应用程序接口API是是Windows操作系统提供给应用程序的操作系统提供给应用程序的编程接口,也就是编程接口,也就是Windows提供给应用程序调用的系统函数。提供给应用程序调用的系统函数。应用程序通过调用这些函数来实现操作系统的某些功能,如创应用程序通过调用这些函数来实现操作系统的某些功能,如创建文件、申请内存和绘图等。建文件、申请内存和绘图等。Win32 API是是32位位Windows环境环境下的应用程序接口,主要由三个动态链接库组成:下的应用程序接口,主要由三个动态链接库组成:Kernel32.dll负责基本的操作系统功能,如内存管理、负责基本的操作系统功能,如内存管理、文件的输入输出和运行程序等;文件的输入输出和运行程序等;GDI32.dll负责基本的绘图功能,如在图形设备上绘制点、负责基本的绘图功能,如在图形设备上绘制点、线和矩形等基本图形元素,线和矩形等基本图形元素,GDI是是Graphic Device Interface(图形设备接口)的简称;(图形设备接口)的简称;User32.dll负责创建和维护屏幕上的窗口,凡是与负责创建和维护屏幕上的窗口,凡是与Windows的图形用户界面的图形用户界面GUI(Graphic Users Interface)有)有关的操作,如绘制一个按钮、通知应用程序用户单击了某个按关的操作,如绘制一个按钮、通知应用程序用户单击了某个按钮等都由钮等都由User32模块处理。模块处理。2事件驱动事件驱动 Windows编程使用事件驱动的程序设计思想。在事件驱编程使用事件驱动的程序设计思想。在事件驱动的程序结构中,程序的控制流程不再由事件的预定发生顺序动的程序结构中,程序的控制流程不再由事件的预定发生顺序来决定,而是由实际运行时各种事件的实际发生来触发,而事来决定,而是由实际运行时各种事件的实际发生来触发,而事件的发生可能是随机的、不确定的,并没有预定的顺序。事件件的发生可能是随机的、不确定的,并没有预定的顺序。事件驱动程序设计是一种驱动程序设计是一种“被动式被动式”的程序设计方法,程序开始运的程序设计方法,程序开始运行时,处于等待消息的状态,然后取得消息并对其做出响应,行时,处于等待消息的状态,然后取得消息并对其做出响应,处理完毕后再回到原来的等待状态。处理完毕后再回到原来的等待状态。Windows应用程序消息队列键盘消息鼠标消息其它消息处理消息取消消息Windows程序事件驱动原理MSGtypedef struct tagMSG HWND hwnd;UINT message;WPARAM wParam;LPARAM lParam;DWORD time;POINT pt;MSG;消息的类型消息的类型u输入消息输入消息:由键盘鼠标操作产生由键盘鼠标操作产生.u控件消息控件消息:操作窗口上的控件对操作窗口上的控件对象时产生象时产生.u系统消息系统消息:对程序化的事件或系对程序化的事件或系统时钟中断做出反应统时钟中断做出反应.u用户消息用户消息:程序员自己定义并在程序员自己定义并在应用程序中主动发出应用程序中主动发出.消息是消息是Windows应用程序运行的核心工作机制应用程序运行的核心工作机制,由一个结由一个结构体构体MSG来表示来表示:Windows编程常用的消息有:窗口管理消息、初始化消编程常用的消息有:窗口管理消息、初始化消息、输入消息、系统消息、剪贴板消息、控制处理消息等。息、输入消息、系统消息、剪贴板消息、控制处理消息等。8.1.2 MFC MFC的英文全称是的英文全称是Microsoft Foundation Class,即微,即微软的基础类库,包含了许多微软公司已经定义好的用来开发软的基础类库,包含了许多微软公司已经定义好的用来开发Windows应用程序的一组类。这些类用来表示窗口、对话框、应用程序的一组类。这些类用来表示窗口、对话框、设备上下文、公共设备上下文、公共GDI对象如画笔、调色板、控制框和其它标对象如画笔、调色板、控制框和其它标准的准的Windows部件,并封装了大部分的部件,并封装了大部分的Windows API函数。函数。MFC类库中包含了一百多个程序开发过程中最常用到的类库中包含了一百多个程序开发过程中最常用到的类,不同的类实现不同的功能,类与类之间有区别又有联系。类,不同的类实现不同的功能,类与类之间有区别又有联系。在进行程序设计的时候,如果类库中的某个类能完成所需要的在进行程序设计的时候,如果类库中的某个类能完成所需要的功能,只要创建这个类的对象,然后调用该对象的方法就可以功能,只要创建这个类的对象,然后调用该对象的方法就可以了。还可以利用了。还可以利用“继承继承”方法从类库中的已有类派生出自己的方法从类库中的已有类派生出自己的类,根据需要加上所需的特性和方法,产生一个更专门的、功类,根据需要加上所需的特性和方法,产生一个更专门的、功能更为强大的对象。当然,也可以在程序中定义全新的类,创能更为强大的对象。当然,也可以在程序中定义全新的类,创建该类的对象来实现功能,并根据需要不断完善类的功能。建该类的对象来实现功能,并根据需要不断完善类的功能。8.1.3 Microsoft Visual C+Visual C+集成开发环境提供了一系列开发Windows程序的各种向导和辅助工具,这在一定程度上实现了软件的自动生成和可视化编程。Visual C+集成环境中几个最主要的开发工具有:AppWizard应用程序向导 AppWizard工具可以自动生成应用程序的基本框架。ClassWizard类向导 ClassWizard是用来管理应用程序中的类的,通过ClassWizard可以方便地为应用程序中的类添加成员变量、建立消息映射和消息映射函数,还可以方便地生成新类。Resource Editor资源编辑器 在Visual C+开发的应用程序中要用到大量的位图、菜单、工具栏和对话框等各种资源。8.2 对话框与常用控件概述对话框与常用控件概述 8.2.1 对话框对话框 对话框(Dialog)是Windows应用程序与用户之间进行交互的重要手段,应用程序通过对话框获得用户的输入,并通过对话框将程序运行的有关信息显示给用户。为实现程序的交互功能,接受各种消息驱动,对话框中还应该包括各种类型的控制对象,例如静态文本、文本编辑框和命令按钮等,这些对象被称为控件(Controls)。对话框依靠它所包含的控件与用户进行交互,实现数据的输入和信息的输出。CDialog类在MFC类库中的继承关系 对话框实际上也是一个窗口,它是Windows应用程序与用户交互的界面。在MFC中,对话框的功能封装在CDialog类中,它是CWnd类的派生类,在CWnd类的基础上增加了数据交换功能。1对话框资源与对话框类对话框资源与对话框类 一个对话框由对话框资源和对话框对象两部分组成,对话一个对话框由对话框资源和对话框对象两部分组成,对话框资源提供对话框的显示界面,对话框对象实现对话框的交互框资源提供对话框的显示界面,对话框对象实现对话框的交互功能。功能。对话框资源是对话框与用户交互的图形界面,是对话框资源是对话框与用户交互的图形界面,是Windows的多种资源的多种资源中的一种。可使用中的一种。可使用Develop Studio资源编辑器中的对话框模板创建、编辑对资源编辑器中的对话框模板创建、编辑对话框资源,可以向对话框中添加控件并对控件进行编辑,从而设计对话框界话框资源,可以向对话框中添加控件并对控件进行编辑,从而设计对话框界面。在资源编辑器中可对资源进行可视化编辑,所设计的对话框即为将来显面。在资源编辑器中可对资源进行可视化编辑,所设计的对话框即为将来显示的界面示的界面.编辑好的对话框资源,必须声明其对应的对话框类并创建其对应的对话编辑好的对话框资源,必须声明其对应的对话框类并创建其对应的对话框对象才能驱动该对话框,完成程序与用户的交互。通常为每个对话框资源框对象才能驱动该对话框,完成程序与用户的交互。通常为每个对话框资源从从CDialog类派生出其对应的类,再为其创建对应的对话框对象。在对话框类派生出其对应的类,再为其创建对应的对话框对象。在对话框显示前,访问对话框对象的成员变量为对话框的控件初始化;在用户启动对显示前,访问对话框对象的成员变量为对话框的控件初始化;在用户启动对话框时调用其成员函数显示对话框;在关闭对话框后,通过访问对话框对象话框时调用其成员函数显示对话框;在关闭对话框后,通过访问对话框对象的成员变量获得用户输入的数据。的成员变量获得用户输入的数据。对话框的设计包括对话框资源和对话框对象设计两个方面对话框的设计包括对话框资源和对话框对象设计两个方面2模式对话框和非模式对话框模式对话框和非模式对话框 按照操作方式,可将对话框分为模式对话框和非模式对话按照操作方式,可将对话框分为模式对话框和非模式对话框两类。框两类。模式对话框启动后垄断了用户的输入,当一个对话框按模模式对话框启动后垄断了用户的输入,当一个对话框按模式方式被打开后,用户只能与该对话框进行交互,而其它界面式方式被打开后,用户只能与该对话框进行交互,而其它界面对象不能接受用户的信息,直至关闭该模式对话框。对象不能接受用户的信息,直至关闭该模式对话框。Word中的中的“打开打开”、“另存为另存为”、“字体字体”、“段落段落”和和“页面设置页面设置”等大部分对话框都是模式对话框等大部分对话框都是模式对话框 非模式对话框类似普通的非模式对话框类似普通的Windows窗口,并不垄断用户的窗口,并不垄断用户的输入。当对话框按非模式打开后,用户可以同时打开或切换到输入。当对话框按非模式打开后,用户可以同时打开或切换到其它窗口对象进行操作,操作完毕后,再用鼠标或其它方式激其它窗口对象进行操作,操作完毕后,再用鼠标或其它方式激活该对话框继续进行操作。活该对话框继续进行操作。Word中的中的“查找和替换查找和替换”对话框就是非模式对话对话框就是非模式对话框,打开该对话框后还可以进行文档的编辑操作。框,打开该对话框后还可以进行文档的编辑操作。8.2.2 常用控件常用控件 对话框实际上只是提供了一个窗口,真正与用户对话框实际上只是提供了一个窗口,真正与用户进行交互的是对话框上的控件。控件(进行交互的是对话框上的控件。控件(Control components)是)是Windows提供的独立部件,与对话提供的独立部件,与对话框一起使用,在对话框与用户的交互过程中起着重要框一起使用,在对话框与用户的交互过程中起着重要的作用,它是对话框的子窗口。的作用,它是对话框的子窗口。Visual C+的资源编的资源编辑器可对对话框上的控件进行可视化编辑,通过设置辑器可对对话框上的控件进行可视化编辑,通过设置控件的外观和属性(控件的外观和属性(Property)来达到程序要求。)来达到程序要求。每每一一个个控控件件实实际际上上就就是是一一个个CWnd派派生生类类的的对对象象,例例如如,编编辑辑控控件件对对应应CEdit类类的的对对象象,静静态态文文本本控控件件对对应应CStatic类类的的对对象象,在在MFC类类库库中中,控控件件的的属属性性和和功功能被封装在控件对应的类中。能被封装在控件对应的类中。常用控件常用控件1静态文本控件(静态文本控件(Static Text)2图片控件(图片控件(Picture)3线框控件(线框控件(Group Box)4编辑框控件(编辑框控件(Edit Box)5按钮控件(按钮控件(Button)6检查框控件(检查框控件(Check Box)7单选按钮控件(单选按钮控件(Radio Button)8列表框控件(列表框控件(List Box)9组合框控件(组合框控件(Combo Box)8.2.3 使用使用MFC AppWizard创建基于对话框的应用程序创建基于对话框的应用程序 基于对话框的应用程序,就是该程序运行时其主界面是基于对话框的应用程序,就是该程序运行时其主界面是一个对话框。利用一个对话框。利用VC中的应用程序向导中的应用程序向导AppWizard可以创建可以创建一个基于对话框的一个基于对话框的Windows应用程序。应用程序。1创建项目创建项目 首先启动Visual C+,通过新建启动开发MFC应用程序的AppWizard来创建项目。AppWizard引导创建应用程序的有关信息,包括应用程序的类型、新创建的类以及应用程序的全部特征。在确认后,AppWizard会开始应用程序的自动生成工作,在指定的目录下生成应用程序框架所必须的全部文件。2编辑、编译、链接及运行编辑、编译、链接及运行 在Visual C+中可看到新建项目已被打开,作为应用程序主窗口的对话框也在右面的资源编辑器中被打开,“Controls”控件工具栏也在窗口的右侧被打开供编辑对话框时使用,“Dialog”对话框工具栏也被同时打开。此时可按下F7编译、链接程序,然后按下Ctrl+F5运行程序,由此AppWizard生成了一个可编译链接运行的应用程序。8.3 与用户交互的基于对话框的与用户交互的基于对话框的MFC应用程序应用程序8.3.1 建立建立MFC应用程序项目应用程序项目 为在Visual C+中建立一个应用程序,首先创建该应用程序的项目。用MFC AppWizard创建基于对话框的项目,其步骤简述如下:1启动Visual C+,选择“File”菜单中的“New”菜单命令,在弹出的“New”对话框中选择“Projects”标签,并在下面的列表框中选择“MFC AppWizard(exe)”选项。2在MFC AppWizard-Step 1对话框中选择“Dialog based”选项,生成基于对话框的应用程序;语言选择“中文”,3在MFC AppWizard-Step 2 of 4对话框的“Please enter a title for your dialog”编辑框中输入应用程序对话框窗口的标题,4在MFC AppWizard-Step 3 of 4对话框中均选择缺省设置,单击“Next”按钮,进入最后一步。5MFC AppWizard-Step 4 of 4对话框显示了MFC AppWizard将要创建的类名、基类名和对应的文件名。单击“Finish”按钮结束设置。6最后的New Project Information对话框显示了要创建项目的全部设置,检查无误后单击“OK”按钮,由AppWizard生成应用程序框架。8.3.2 编辑对话框资源编辑对话框资源 1在资源编辑器中打开对话框 为了进行对话框资源的设计,首先要在资源编辑器中将对话框打开。供程序员进行可视化编辑。2设置对话框属性 在对话框编辑打开了“Dialog Properties”对话框,在打开的属性对话框中对对话框的属性进行设置 3编辑控件 要制作的对话框,可能包括有静态文本控件、文本编辑框和命令按钮等,通过对控件的编辑来完成对话框的界面设计。8.3.3 编辑对话框类编辑对话框类 AppWizard在 创 建 项 目 时 就 为 对 话 框 生 成 了 其 对 应 的 对 话 框 类CTriangleDlg,该类是从CDialog类派生来的。要使程序实现某项功能,需要对CTriangleDlg类进行编辑,也就是为它添加一些成员变量、建立消息映射和消息映射函数并为函数编写代码,类向导ClassWizard可以方便地对类进行操作。(1)为控件生成其对应的成员变量)为控件生成其对应的成员变量 编辑框主要用来实现应用程序与用户交互信息的,只要在对话框类中为控件生成其对应的数据成员变量,在程序中使用对应的数据成员变量就可以操纵该控件。使用ClassWizard可以非常方便地为控件生成其对应的数据成员变量。(2)对话框的数据交换机制)对话框的数据交换机制 对话框类的数据成员变量需要与其相对应的控件交换数据,以完成输入或输出功能。对话框需要一种机制来实现对话框类与控件之间的数据交换功能,这对对话框来说是至关重要的。MFC提供的CDataExchange类的数据交换DDX(dialog data exchange)机制来实现这种功能,该类还提供了数据有效化机制DDV(dialog data validation)来检测用户输入的数据是否符合要求。数据交换DDX和数据有效性机制DDV适用于编辑框、检查框、单选按钮、列表框和组合框等。1.数据交换机制数据交换机制 MFC采用一种消息映射机制来决定如何处理特定的消息,MFC的消息映射机制包括一组宏,用于标识消息处理函数、映射类成员函数和对应的消息等。在类的定义中,为与一般成员函数区分,常将afx_msg放在某些函数类型前面,用以标记它是一个消息处理成员函数。若类中包含有消息处理函数,那么还需要加上一个DECLARE_MESSAGE_MAP()宏,该宏对程序执行部分所定义的消息映射进行初始化,声明消息映射表的结构。2.MFC的消息映射机制的消息映射机制 Windows程序的运行是依靠事件来驱动的。事件由操作系统捕捉,以消息的形式送入消息队列,然后通过消息循环从队列中不断取出消息,送到对应的窗口过程里处理。说说 明明:OnInitDialog对 对 话 框 的 作 用 与 OnCreate对CMainFrame的作用类似。MFC窗口的初始化工作一般在OnCreate成员函数中进行,但对话框的初始化工作最好在OnInitDialog中进行。3.对话框的初始化对话框的初始化 对话框的初始化工作一般在构造函数和OnInitDialog函数中完成。构造函数中的初始化主要是针对对话框类的数据成员,前面在使用ClassWizard为控件添加其对应的成员变量时,ClassWizard在构造函数中为所添加的成员变量进行了初始化。构造函数是在创建对话框对象时调用的,而OnInitDialog函数是WM_INITDIALOG消息的处理函数。在启动对话框时,对话框会收到WM_INITDIALOG消息,从而调用OnInitDialog函数,此时对话框已初步创建,对话框的窗口句柄也已有效,但对话框还未被显示出来。因此,可以在OnInitDialog中做一些影响对话框外观的初始化工作。1使用AppWizard创建基于对话框的应用程序2设计对话框资源:添加3个编辑框和1个命令按钮控件3设计对话框类4初始化对话框5为控件添加控件类成员变量以调用控件类的成员函数8.4 多对话框应用程序多对话框应用程序 8.4.1基于对话框的小学加法运算练习程序基于对话框的小学加法运算练习程序 利用MFC建立基于对话框的Windows应用程序,为小学生提供进行100以内加法运算的检测程序。添加控件对应的成员变量 为类添加一般成员变量 为类添加一般成员函数 添加消息映射函数 CString类 由于ClassWizard不支持ON_CONTROL_RANGE宏,所以必须手工建立这些控件的消息映射和消息处理函数。操作过程为:首先,在CExamDlg类的头文件ExamDlg.h中加入消息处理函数的声明:然后,打开CExamDlg类的源文件ExamDlg.cpp,将ON_CONTROL_RANGE映射加入到CExamDlg类的消息映射表中 最后,在CExamDlg类的源文件ExamDlg.cpp的最后插入消息处理函数,8.4.2 多个控件的消息映射多个控件的消息映射 如果要建立多个消息映射及其函数,而且它们的处理是相同的,可以利用MFC提供的消息映射宏ON_CONTROL_RANGE解决这一问题,该映射宏可把ID连续的多个控件发出的消息映射到同一个处理函数上。这样,只要编写一个消息处理函数,就可以对多个控件消息作出响应。编辑关于对话框 选择Resource View标签,展开Dialog对话框资源夹,双击IDD_ABOUTBOX,则在右边的资源编辑器中打开了该对话框资源,可进行可视化编辑使之显示相关信息,然后关闭编辑窗口。在主对话框中添加命令按钮用来打开关于对话框 建立消息映射及映射函数 添加消息映射函数的实现代码 编译链接运行程序8.4.3 显示显示“关于关于”对话框对话框 使用MFC AppWizard创建的基于对话框的Windows应用程序,除了生成了一个主对话框外,还生成了一个About关于对话框及其对应的类CAboutDlg。8.4.4 添加添加“登录登录”对话框对话框 如果要在程序中添加一个不存在的对话框,方法如下:首先要添加一个对话框资源;然后添加与之对应的对话框类,并对该类进行编辑以实现与用户的交互;最后在打开它的另一个对话框的控件或菜单命令所对应的消息映射函数中,定义该对话框类的对象,再使用成员函数DoModal将其打开。1添加对话框资源添加对话框资源 打开“Insert Resource”对话框 添加对话框资源 编辑新对话框8.4.4 添加添加“登录登录”对话框对话框 2.添加对话框类添加对话框类 添加对话框类 为控件生成其对应的成员变量 手工添加代码为类添加成员变量 添加消息映射及消息映射成员函数 登录对话框的初始化3启动登录对话框启动登录对话框 在程序运行时主对话框IDD_EXAM_DIALOG是如何被打开的。首先创建了一个CExamDlg类的对象dlg,然后调用其成员函数DoModal将对话框按模式方式打开。编译无误后,链接生成可执行程序,最后运行程序。在运行程序时,先弹出登录对话框,输入正确的用户名和密码后,才能打开主对话框。4链接运行程序链接运行程序