资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第4章对话框,4.1 从,C+,到,Windows,编程,4.2 添加并使用对话框,4.3 使用向导创建对话框应用程序,4.4 使用无模式对话框,4.5 通用对话框和消息对话框,4.1从,C+,到,Windows,编程,简单的,Windows,应用程序,(1),选择“文件”,“新建”菜单命令,显示出“新建”对话框。单击“工程”标签,从列表框中选中,Win32 Application(Win32,应用程序,),项。,(2),在工程名称框中键入,Win32,应用程序项目名称,Ex_HelloMsg,。在“位置”下的编辑框中直接键入文件夹名称,或单击浏览按钮,(.),选择一个已有的文件夹。,(3),单击,确定,按钮继续。一个询问项目类型的,Win32,应用程序向导将被显示,选中,An empty project,项。单击,完成,按钮,系统将显示,AppWizard,的创建信息,单击,确定,按钮系统将自动创建此应用程序。,4.1从,C+,到,Windows,编程,(4),再次选择“文 件”,“新建”菜单命令,显示出“新建”对话框。单击“文件”标签,在左边的列表框中选择,C+Source File,项,在右边的“文件”下的编辑框中键入,Ex_HelloMsg.cpp,,单击,确定,按钮。,(5),输入下面的代码:,#include,int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow),MessageBox(NULL,你好,我的,Visual C+,世界!,问候,0);,return 0;,4.1从,C+,到,Windows,编程,WinMain,函数的原型如下:,int WINAPI WinMain(,HINSTANCE,hInstance,/,当前实例句柄,HINSTANCE,hPrevInstance,/,前一实例句柄,LPSTR,lpCmdLine,/,指向命令行参数的指针,int,nCmdShow,)/,窗口的显示状态,这里出现了一个新的概念“句柄”,(handle),,所谓句柄是一个标识,Windows,资源和设备等对象的变量,或者是一个对操作系统资源的间接引用。,每一个用,C/C+,编写的,Windows,应用程序都需要,Windows.h,头文件,它还包含了其他的一些,Windows,头文件。这些头文件定义了,Windows,的所有数据类型、函数调用、数据结构和符号常量。,程序中,,MessageBox,是一个,Win32 API(Application Programming Interface,应用程序接口,),函数,用来弹出一个对话框窗口,显示短信息。该函数第一个参数用来指定父窗口句柄,即对话框所在的窗口句柄。第二、三个参数分别用来指定显示的消息内容和对话框窗口的标题,最后一个参数用来指定在对话框中显示的按钮。,4.1从,C+,到,Windows,编程,编程特点,Windows,应用程序具有这样的一些特性:消息驱动机制、图形设备接口,(GDI),、基于资源的程序设计、动态链接库。,消息驱动机制,DOS,程序是通过调用系统的函数来获得用户输入的,,Windows,程序是通过操作系统发送的消息来处理用户输入的。消息驱动的机制是,Windows,编程的最大特点。,WinMain,函数通常要完成以下几步工作:,定义并调用,API,函数,RegisterClass,注册应用程序的窗口类。,调用相关,API,函数创建和显示窗口,并进行其它必要的初始化处理。其中,函数,CreateWindow,用来创建已注册窗口类的窗口。,创建和启动应用程序的消息循环。,Windows,应用程序接受各种不同的消息,包括键盘消息、鼠标以及窗口产生的各种消息。,Windows,系统首先将消息放入消息队列中,应用程序的消息循环就是从应用程序的消息队列中检取消息,并将消息发送相应的窗口过程函数中作进一步处理。,API,函数,GetMessage,和,DispatchMessage,就是起到这样的作用。,如果接收到,WM_QUIT,消息,则退出应用程序。,4.1从,C+,到,Windows,编程,图形设备接口,(GDI),Windows,提供了一个抽象的图形设备接口,(Graphical Device Interface,,简称,GDI),,使用户直接利用系统的,GDI,函数就能方便实现图形和文本的输出,而不必关心与系统相连的外部设备的类型。,基于资源的程序设计,Windows,应用程序常常包含众多图形元素。每一个这样的资源都用相应的标识符来区分,而且,Windows,内部也有预定义的资源。,在,Windows,环境下,每一个资源元素都作为一种可以装入应用程序的资源来存放。这些资源可以被编辑、修改,也可以被其他应用程序所共享。,动态链接库,动态链接库提供一些特定结构的函数,能被应用程序在运行过程中装入和连接,且多个程序可以共享同一个动态链接库。,Windows,提供了应用程序可调用的丰富的函数,大多数用于实现其用户界面和在显示器上显示的文本和图形,都是通过动态链接库来实现的。这些动态链接库是一些具有,DLL,扩展名或者有时是,EXE,扩展名的文件。,在,Windows,操作系统中,最主要的,DLL,有,KERNEL32.DLL,、,GDI32.DLL,和,USER32.DLL,。,其中,,KERNEL32.DLL,用来处理存储器低层功能、任务和资源管理等,Windows,核心服务;,GDI32.DLL,用来提供图形设备接口,管理用户界面和图形绘制,包括,Windows,元文件、位图、设备描述表和字体等;而,USER32.DLL,负责窗口的管理,包括消息、菜单、光标、计时器以及其它与控制窗口显示相关的一些功能。,4.1从,C+,到,Windows,编程,基本数据类型,4.1从,C+,到,Windows,编程,应用程序框架类型,MFC,把编程规范中的大多数内容封装成为各种类,使程序员从繁杂的编程中解脱出来。,Visual C+,还提供大量的向导和可视化编辑工具,使得用户不需要添加太多的代码就能实现不同风格和用途的应用程序。,MFC AppWizard,就是,Visual C+6.0,提供的一个非常有用的向导,它能为用户快速、高效、自动地生成一些常用的标准程序结构和编程风格。,MFC AppWizard(exe),应用程序框架包含用户最常用、最基本的三种应用程序类型:单文档、多文档和基于对话框的应用程序。,单文档应用程序每次只能打开和处理一个文档,对话框的程序没有菜单、工具栏及状态栏,也不能处理文档,但它的好处是速度快,代码少,程序员所花费的开发和调试时间短。,多文档应用程序,能允许同时打开和处理多个文档。与单文档应用程序相比,增加了许多功能,因而需要大量额外的编程工作。,4.1从,C+,到,Windows,编程,表,4.2 MFC AppWizard,创建的应用程序类型,4.1从,C+,到,Windows,编程,创建一个应用程序框架,开始,选择“文件”,“新建”菜单,在弹出的“新建”对话框中选择“工程”标签,这时显示出一系列的应用程序项目类型;选择,MFC AppWizard(exe),的项目类型,(,该类型用于创建可执行的,Windows,应用程序,),,将项目工作文件夹定位在“,Visual C+6.0,程序,对话框”,并在工程框中输入项目名,Ex_SDI,。,4.1从,C+,到,Windows,编程,选择程序类型,单击确定按钮,进行下列选择:,(1),从应用程序类型单个文档,(Single Document,,简称,SDI),、多重文档,(Multiple Document,,简称,MDI),和基本对话,(Dialog Based,,基于对话框的应用程序,),中选择“单个文档”。,(2),决定应用程序中是否需要,MFC,的文档视图,(,“文档,/,查看体系结构支持”,),结构的支持。若不选定此项,则程序中的磁盘文件的打开、保存以及文档和视图的相互作用等功能需要用户来实现。一般情况下,应选中此项。,(3),选择资源所使用的语言,这里是“中文中国”。,4.1从,C+,到,Windows,编程,简单创建,保留默认的选项,单击,完成,按钮,显示出用户在步骤中作出的选择,单击,确定,按钮系统开始创建。,4.1从,C+,到,Windows,编程,编译并运行,到这里为止,用户虽然没有编写任何程序代码,但,MFC AppWizard,已经根据用户的选择内容自动生成基本的应用程序框架。单击编译工具条上的运行工具按钮“”或按快捷键,Ctrl+F5,,系统开始编连并运行生成的单文档应用程序可执行文件,Ex_SDI.exe,。,4.2添加并使用对话框,资源与资源标识,资源的分类,将上例,Ex_SDI,的项目工作区窗口切换到“,ResourceView,”页面。,资源可分为下列几类:,(1),快捷键列表,(Accelerator),:,一系列组合键的集合,被应用程序用来引发一个动作。该列表一般与菜单命令相关联,用来代替鼠标操作。,(2),对话框,(Dialog),:,含有按钮、列表框、编辑框等各种控件的窗口。,(3),图标,(Icon),:,代表应用程序显示在,Windows,桌面上的位图,它同时有,32,32,像素和,16,16,像素两种规格。,(4),菜单,(Menu),:,用户通过菜单可完成应用程序的大部分操作。,(5)字串表,(String Table),:应用程序使用的全局字符串或其他标识符。,(6)工具栏按钮,(Toolbar),:工具栏外观是以一系列具有相同尺寸的位图组成的,它通常与一些菜单命令项相对应,用以提高用户的工作效率。,(7)版本信息,(Version),:包含应用程序的版本、用户注册码等相关信息。,4.2添加并使用对话框,标识符,每一个资源类别下都有一个或多个相关资源,每一个资源均是由标识符来定义的。当添加或创建一个新的资源或资源对象时,系统会为其提供默认的名称,如,IDR_MAINFRAME,等。用户可重新命名,但要按一定的规则来进行。一般地,要遵循下列规则:,(1),在标识符名称中允许使用字母,az,、,AZ,、,09,以及下划线。,(2),标识符名称不区分大小写字母,如,new_idd,与,New_Idd,是相同的标识符。,(3),不能以数字开头,如,8BIT,是不合法的标识符名。,(4),字符个数不得超过,247,个。,4.2添加并使用对话框,添加对话框资源,添加对话框资源一般可按下列步骤,(,在上例,Ex_SDI,基础上进行,),:,(1),选择“插入”,“资源”菜单,或按快捷键,Ctrl+R,打开“插入资源”对话框,在对话框中可以看到资源列表中存在,Dialog,项,若单击,Dialog,项左边的“,+,”号,将展开对话框资源的不同类型选项。,4.2添加并使用对话框,(2),对展开的不同类型的对话框资源不作任何选择,选中“,Dialog,”,单击,新建,按钮,系统就会自动为当前应用程序添加了一个对话框资源。,系统为对话框资源自动赋给它一个默认的标识符名称,(,第一次为,IDD_DIALOG1,,,以后依次为,IDD_DIALOG2,、,IDD_DIALOG3,、,.),。,使用通用的对话框模板创建新的对话框资源。对话框的默认标题为,Dialog,,,有,OK,和,Cancel,两个按钮,这两个按钮的标识符分别为,IDOK,和,IDCANCEL,。,对话框模板资源所在的窗口称为对话框资源编辑器,在这里可以通过控件工具栏和布局工具栏向对话框添加和布局控件,并可设置对话框的属性。,4.2添加并使用对话框,设置对话框属性,在对话框模板处右击鼠标,从弹出的快捷菜单中选择“属性”菜单项。,表,4.5,对话框的,General,属性,4.2添加并使用
展开阅读全文