版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第4章对话框章对话框 4.1 4.1 从从C+C+到到WindowsWindows编程编程 4.2 4.2 添加并运用对话框添加并运用对话框 4.3 4.3 运用导游创建对话框运用程序运用导游创建对话框运用程序 4.4 4.4 运用无方式对话框运用无方式对话框 4.5 4.5 通用对话框和音讯对话框通用对话框和音讯对话框 4.14.1从从C+C+到到WindowsWindows编程编程 4.1.1简单的Windows运用程序 (1)选择“文件“新建菜单命令,显示出“新建对话框。单击“工程标签,从列表框中选中Win32 Application(Win32 运用程序)项。 (2) (2)在工程称
2、号框中键入在工程称号框中键入Win32Win32运用程序工程称号运用程序工程称号Ex_HelloMsgEx_HelloMsg。在。在“位置下的编辑框中直接键入文位置下的编辑框中直接键入文件夹称号,或单击阅读按钮件夹称号,或单击阅读按钮(.)(.)选选择一个已有的文件夹。择一个已有的文件夹。 (3)(3)单击单击 确定确定 按钮继续。一个按钮继续。一个讯问工程类型的讯问工程类型的Win32Win32运用程序导游运用程序导游将被显示,选中将被显示,选中An empty projectAn empty project项。单击项。单击 完成完成 按钮,系统将显示按钮,系统将显示AppWizardApp
3、Wizard的创建信息,单击的创建信息,单击 确定确定 按钮系统将自动创建此运用程序。按钮系统将自动创建此运用程序。 4.14.1从从C+C+到到WindowsWindows编程编程 (4) (4)再次选择再次选择“文文 件件“新建菜单命令,新建菜单命令,显示出显示出“新建对话框。新建对话框。单击单击“文件标签,在左文件标签,在左边的列表框中选择边的列表框中选择C+ C+ Source FileSource File项,在右边的项,在右边的“文件下的编辑框中键文件下的编辑框中键入入Ex_HelloMsg.cppEx_HelloMsg.cpp,单击,单击 确定确定 按钮。按钮。 (5) (5)
4、输入下面的代码:输入下面的代码:#include #include int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) LPSTR lpCmdLine, int nCmdShow) MessageBox (NULL, MessageBox (NULL, 他好,我的他好,我的Visual C+Visual C+世界!世界!, ,
5、 问候问候, 0) ;, 0) ; return 0 ;return 0 ; 4.14.1从从C+C+到到WindowsWindows编程编程 WinMain函数的原型如下:函数的原型如下:int WINAPI WinMain (HINSTANCE hInstance, / 当前实例句柄当前实例句柄HINSTANCE hPrevInstance, / 前一实例句柄前一实例句柄LPSTR lpCmdLine, / 指向命令行参数的指针指向命令行参数的指针int nCmdShow) / 窗口的显示形状窗口的显示形状 这里出现了一个新的概念这里出现了一个新的概念“句柄句柄(handle),所谓句柄是
6、一个标识,所谓句柄是一个标识Windows资源和设备等对象的变量,或者是一个对操作系统资源的间接援用。资源和设备等对象的变量,或者是一个对操作系统资源的间接援用。 每一个用每一个用C/C+编写的编写的Windows运用程序都需求运用程序都需求Windows.h头文件,它还包含了其他头文件,它还包含了其他的一些的一些Windows头文件。这些头文件定义了头文件。这些头文件定义了Windows的一切数据类型、函数调用、数据的一切数据类型、函数调用、数据构造和符号常量。构造和符号常量。 程序中,程序中,MessageBox是一个是一个Win32 API(Application Programming
7、 Interface, 运用程序运用程序接口接口)函数,用来弹出一个对话框窗口,显示短信息。该函数第一个参数用来指定父窗口函数,用来弹出一个对话框窗口,显示短信息。该函数第一个参数用来指定父窗口句柄,即对话框所在的窗口句柄。第二、三个参数分别用来指定显示的音讯内容和对话句柄,即对话框所在的窗口句柄。第二、三个参数分别用来指定显示的音讯内容和对话框窗口的标题,最后一个参数用来指定在对话框中显示的按钮。框窗口的标题,最后一个参数用来指定在对话框中显示的按钮。 4.14.1从从C+C+到到WindowsWindows编程编程 4.1.2Windows编程特点编程特点 Windows运用程序具有这样的
8、一些特性:音讯驱动机制、图形设备接口运用程序具有这样的一些特性:音讯驱动机制、图形设备接口(GDI)、基、基于资源的程序设计、动态链接库。于资源的程序设计、动态链接库。 音讯驱动机制音讯驱动机制 DOS程序是经过调用系统的函数来获得用户输入的,程序是经过调用系统的函数来获得用户输入的,Windows程序是经过操作系统发送的程序是经过操作系统发送的音讯来处置用户输入的。音讯驱动的机制是音讯来处置用户输入的。音讯驱动的机制是Windows编程的最大特点。编程的最大特点。WinMain函数通常要完成以下几步任务:函数通常要完成以下几步任务: 定义并调用定义并调用API函数函数RegisterClas
9、s注册运用程序的窗口类。注册运用程序的窗口类。 调用相关调用相关API函数创建和显示窗口,并进展其它必要的初始化处置。其中,函数函数创建和显示窗口,并进展其它必要的初始化处置。其中,函数CreateWindow用来创建已注册窗口类的窗口。用来创建已注册窗口类的窗口。创建和启动运用程序的音讯循环。创建和启动运用程序的音讯循环。Windows运用程序接受各种不同的音讯,包括键盘音讯、运用程序接受各种不同的音讯,包括键盘音讯、鼠标以及窗口产生的各种音讯。鼠标以及窗口产生的各种音讯。Windows系统首先将音讯放入音讯队列中,运用程序系统首先将音讯放入音讯队列中,运用程序的音讯循环就是从运用程序的音讯
10、队列中检取音讯,并将音讯发送相应的窗口过程函数的音讯循环就是从运用程序的音讯队列中检取音讯,并将音讯发送相应的窗口过程函数中作进一步处置。中作进一步处置。API函数函数GetMessage 和和DispatchMessage就是起到这样的作用。就是起到这样的作用。 假设接纳到假设接纳到WM_QUIT音讯,那么退出运用程序。音讯,那么退出运用程序。 4.14.1从从C+C+到到WindowsWindows编程编程 图形设备接口图形设备接口(GDI) Windows提供了一个笼统的图形设备接口提供了一个笼统的图形设备接口(Graphical Device Interface,简称,简称GDI),运
11、用户直接利用系统的,运用户直接利用系统的GDI函数就能方便实现图形和文本的输出,而不用关怀与函数就能方便实现图形和文本的输出,而不用关怀与系统相连的外部设备的类型。系统相连的外部设备的类型。 基于资源的程序设计基于资源的程序设计 Windows运用程序经常包含众多图形元素。每一个这样的资源都用相应的标识符来区分,运用程序经常包含众多图形元素。每一个这样的资源都用相应的标识符来区分,而且而且Windows内部也有预定义的资源。内部也有预定义的资源。 在在Windows环境下,每一个资源元素都作为一种可以装入运用程序的资源来存放。这些环境下,每一个资源元素都作为一种可以装入运用程序的资源来存放。这
12、些资源可以被编辑、修正,也可以被其他运用程序所共享。资源可以被编辑、修正,也可以被其他运用程序所共享。 动态链接库动态链接库 动态链接库提供一些特定构造的函数,能被运用程序在运转过程中装入和衔接,且多个动态链接库提供一些特定构造的函数,能被运用程序在运转过程中装入和衔接,且多个程序可以共享同一个动态链接库。程序可以共享同一个动态链接库。 Windows提供了运用程序可调用的丰富的函数,大多数用于实现其用户界面和在显示器提供了运用程序可调用的丰富的函数,大多数用于实现其用户界面和在显示器上显示的文本和图形,都是经过动态链接库来实现的。这些动态链接库是一些具有上显示的文本和图形,都是经过动态链接库
13、来实现的。这些动态链接库是一些具有DLL扩展名或者有时是扩展名或者有时是EXE扩展名的文件。扩展名的文件。 在在Windows操作系统中,最主要的操作系统中,最主要的DLL有有KERNEL32.DLL、GDI32.DLL和和USER32.DLL。其中,。其中,KERNEL32.DLL用来处置存储器低层功能、义务和资源管理等用来处置存储器低层功能、义务和资源管理等Windows中心效力;中心效力;GDI32.DLL用来提供图形设备接口,管理用户界面和图形绘制,包用来提供图形设备接口,管理用户界面和图形绘制,包括括Windows元文件、位图、设备描画表和字体等;而元文件、位图、设备描画表和字体等;
14、而USER32.DLL担任窗口的管理,包担任窗口的管理,包括音讯、菜单、光标、计时器以及其它与控制窗口显示相关的一些功能。括音讯、菜单、光标、计时器以及其它与控制窗口显示相关的一些功能。 4.14.1从从C+C+到到WindowsWindows编程编程4.1.3Windows根本数据类型根本数据类型 4.14.1从从C+C+到到WindowsWindows编程编程 4.1.4MFC运用程序框架类型运用程序框架类型 MFC把编程规范中的大多数内容封装成为各种类,使程序员从繁杂的编程中解脱出来。把编程规范中的大多数内容封装成为各种类,使程序员从繁杂的编程中解脱出来。Visual C+还提供大量的导
15、游和可视化编辑工具,使得用户不需求添加太多的代码就还提供大量的导游和可视化编辑工具,使得用户不需求添加太多的代码就能实现不同风格和用途的运用程序。能实现不同风格和用途的运用程序。 MFC AppWizard就是就是Visual C+ 6.0提供的一个非常有用的导游,它能为用户快速、提供的一个非常有用的导游,它能为用户快速、高效、自动地生成一些常用的规范程序构造和编程风格。高效、自动地生成一些常用的规范程序构造和编程风格。 MFC AppWizard(exe)运用程序框架包含用户最常用、最根本的三种运用程序类型:单运用程序框架包含用户最常用、最根本的三种运用程序类型:单文档、多文档和基于对话框的
16、运用程序。文档、多文档和基于对话框的运用程序。 单文档运用程序每次只能翻开和处置一个文档单文档运用程序每次只能翻开和处置一个文档 对话框的程序没有菜单、工具栏及形状栏,也不能处置文档,但它的益处是速度快,代对话框的程序没有菜单、工具栏及形状栏,也不能处置文档,但它的益处是速度快,代码少,程序员所破费的开发和调试时间短。码少,程序员所破费的开发和调试时间短。 多文档运用程序,能允许同时翻开和处置多个文档。与单文档运用程序相比,添加了许多文档运用程序,能允许同时翻开和处置多个文档。与单文档运用程序相比,添加了许多功能,因此需求大量额外的编程任务。多功能,因此需求大量额外的编程任务。4.14.1从从
17、C+C+到到WindowsWindows编程编程表表4.2 MFC AppWizard创建的运用程序类型创建的运用程序类型 4.14.1从从C+C+到到WindowsWindows编程编程 4.1.5创建一个运用程序框架创建一个运用程序框架 开场开场 选择选择“文件文件“新建菜单,在弹出的新建菜单,在弹出的“新建对话框中选择新建对话框中选择“工程标签,这时工程标签,这时显示出一系列的运用程序工程类型;选择显示出一系列的运用程序工程类型;选择MFC AppWizard(exe)的工程类型的工程类型(该类型用于该类型用于创建可执行的创建可执行的Windows运用程序运用程序),将工程任务文件夹定位
18、在,将工程任务文件夹定位在“Visual C+ 6.0程序程序对对话框,并在工程框中输入工程名话框,并在工程框中输入工程名Ex_SDI。 4.14.1从从C+C+到到WindowsWindows编程编程 选择程序类型选择程序类型 单击单击确定确定按钮,进展以下按钮,进展以下选择:选择: (1)从运用程序类型单个文档从运用程序类型单个文档(Single Document,简称,简称SDI)、多重、多重文档文档(Multiple Document ,简称,简称MDI)和根本对话和根本对话(Dialog Based,基,基于对话框的运用程序于对话框的运用程序)中选择中选择“单个单个文档。文档。 (2
19、) (2)决议运用程序中能否需求决议运用程序中能否需求MFCMFC的文档视图的文档视图(“(“文档文档/ /查看体系构造支持查看体系构造支持) )构造的支持。假设不选定此项,那么程序中的磁盘文件的翻开、保管以及文档构造的支持。假设不选定此项,那么程序中的磁盘文件的翻开、保管以及文档和视图的相互作用等功能需求用户来实现。普通情况下,应选中此项。和视图的相互作用等功能需求用户来实现。普通情况下,应选中此项。 (3)(3)选择资源所运用的言语,这里是选择资源所运用的言语,这里是“中文中文 中国中国 。4.14.1从从C+C+到到WindowsWindows编程编程 简单创建简单创建 保管默许的选项,
20、单击保管默许的选项,单击完成完成按钮,显示出用户在步骤中作出的选择,单击按钮,显示出用户在步骤中作出的选择,单击确确定定按钮系统开场创建。按钮系统开场创建。 4.14.1从从C+C+到到WindowsWindows编程编程 编译并运转编译并运转 到这里为止,用户虽然没有编写任何程序代码,但到这里为止,用户虽然没有编写任何程序代码,但MFC AppWizard曾经根据曾经根据用户的选择内容自动生成根本的运用程序框架。单击编译工具条用户的选择内容自动生成根本的运用程序框架。单击编译工具条上的运转工具按钮上的运转工具按钮“ 或按快捷键或按快捷键Ctrl+F5,系统开场编连并运转生成的单文档运用程序可
21、执行文件,系统开场编连并运转生成的单文档运用程序可执行文件Ex_SDI.exe。 4.24.2添加并运用对话框添加并运用对话框 4.2.1资源与资源标识资源与资源标识 资源的分类资源的分类 将上例将上例Ex_SDI的工程任务区窗口切换到的工程任务区窗口切换到“ResourceView页面。页面。 资源可分为以下几类:资源可分为以下几类: ( 1 )( 1 ) 快 捷 键 列 表快 捷 键 列 表(Accelerator)(Accelerator):一系列组合键的:一系列组合键的集合,被运用程序用来引发一个集合,被运用程序用来引发一个动作。该列表普通与菜单命令相动作。该列表普通与菜单命令相关联,
22、用来替代鼠标操作。关联,用来替代鼠标操作。 (2) (2) 对话框对话框(Dialog)(Dialog):含有按钮、列表框、编辑框等各含有按钮、列表框、编辑框等各种控件的窗口。种控件的窗口。 (3)(3)图标图标(Icon)(Icon):代表:代表运用程序显示在运用程序显示在WindowsWindows桌面上的桌面上的位图,它同时有位图,它同时有32323232像素和像素和16161616像素两种规格。像素两种规格。 (4)(4)菜单菜单(Menu)(Menu):用户经:用户经过菜单可完成运用程序的大部分过菜单可完成运用程序的大部分操作。操作。 (5) 字串表(String Table):运用
23、程序运用的全局字符串或其他标识符。 (6) 工具栏按钮(Toolbar):工具栏外观是以一系列具有一样尺寸的位图组成的,它通常与一些菜单命令项相对应,用以提高用户的任务效率。 (7) 版本信息(Version):包含运用程序的版本、用户注册码等相关信息。 4.24.2添加并运用对话框添加并运用对话框标识符标识符 每一个资源类别下都有一个或多个相关资源,每一个资源均是由标识符来定义每一个资源类别下都有一个或多个相关资源,每一个资源均是由标识符来定义的。当添加或创建一个新的资源或资源对象时,系统会为其提供默许的称号,如的。当添加或创建一个新的资源或资源对象时,系统会为其提供默许的称号,如IDR_M
24、AINFRAME等。用户可重新命名,但要按一定的规那么来进展。普通地,要遵等。用户可重新命名,但要按一定的规那么来进展。普通地,要遵照以下规那么:照以下规那么: (1) 在标识符称号中允许运用字母在标识符称号中允许运用字母az、AZ、09以及下划线。以及下划线。 (2) 标识符称号不区分大小写字母,如标识符称号不区分大小写字母,如new_idd与与New_Idd是一样的标识符。是一样的标识符。 (3) 不能以数字开头,如不能以数字开头,如8BIT是不合法的标识符名。是不合法的标识符名。 (4) 字符个数不得超越字符个数不得超越247个。个。4.24.2添加并运用对话框添加并运用对话框 4.2.
25、2添加对话框资源添加对话框资源 添加对话框资源普通可按以下步骤添加对话框资源普通可按以下步骤(在上例在上例Ex_SDI根底上进展根底上进展):(1)选择选择“插入插入“资源菜单,或按资源菜单,或按快捷键快捷键Ctrl+R翻开翻开“插入资源对话插入资源对话框,在对话框中可以看到资源列表中框,在对话框中可以看到资源列表中存在存在Dialog项,假设单击项,假设单击Dialog项左边项左边的的“+号,将展开对话框资源的不同号,将展开对话框资源的不同类型选项。类型选项。 4.24.2添加并运用对话框添加并运用对话框 (2)对展开的不同类型的对话框资源不作任何选择,选中“Dialog,单击新建按钮,系统
26、就会自动为当前运用程序添加了一个对话框资源。 系统为对话框资源自动赋给它一个默许的标识符称号(第一次为IDD_DIALOG1,以后依次为IDD_DIALOG2、IDD_DIALOG3、.)。 运用通用的对话框模板创建新的对话框资源。对话框的默许标题为Dialog,有OK和Cancel两个按钮,这两个按钮的标识符分别为IDOK和IDCANCEL。 对话框模板资源所在的窗口称为对话框资源编辑器,在这里可以经过控件工具栏和规划工具栏向对话框添加和规划控件,并可设置对话框的属性。 4.24.2添加并运用对话框添加并运用对话框4.2.3设置对话框属性设置对话框属性 在对话框模板处右击鼠标,从弹出的快捷菜
27、单中选择在对话框模板处右击鼠标,从弹出的快捷菜单中选择“属性菜单项。属性菜单项。 表表4.5 对话框的对话框的General属属性性 4.24.2添加并运用对话框添加并运用对话框 将添加的对话框的属性进展如下三点修正: 将对话框标识符改成IDD_DIALOG_FIRST; 将对话框标题改为“我的第一个对话框; 单击字体按钮,经过弹出的字体对话框将对话框内的文本设置成“宋体,9 ,以使本人的对话框和Windows中的对话框坚持外观上的一致。 4.24.2添加并运用对话框添加并运用对话框 4.2.4添加和规划控件添加和规划控件 在对话框中添加一个控件的方法:在对话框中添加一个控件的方法: 在控件工
28、具栏中单击某控件;在对话框指定在控件工具栏中单击某控件;在对话框指定位置单击鼠标左键,那么此控件被添加到位置单击鼠标左键,那么此控件被添加到对话框的相应位置,再拖动选择框可改动对话框的相应位置,再拖动选择框可改动控件的大小和位置。控件的大小和位置。 在控件工具栏中单击某控件,此时的鼠标箭在控件工具栏中单击某控件,此时的鼠标箭头对话框内变成头对话框内变成“十字外形;在指定位十字外形;在指定位置处单击鼠标左键不放,拖动鼠标至称心置处单击鼠标左键不放,拖动鼠标至称心位置,释放鼠标键。位置,释放鼠标键。 用鼠标左键点中控件工具栏中的某控件,并用鼠标左键点中控件工具栏中的某控件,并按住鼠标左键不放;在挪
29、动鼠标到对话框按住鼠标左键不放;在挪动鼠标到对话框的指定位置的过程中,用户会看到一个虚的指定位置的过程中,用户会看到一个虚线框,下面带有该控件的标志;释放鼠标线框,下面带有该控件的标志;释放鼠标左键,新添加的控件立刻出如今对话框中。左键,新添加的控件立刻出如今对话框中。 控件的选择静态文本组框复选框组合框程度滚动条旋转按钮滑动条列表视图标签复合编辑月历用户定制工具静态图片编辑框按钮单项选择框列表框垂直滚动条进展条热键树形视图动画日期选择IP地址组合框的扩展图4.14 控件工具栏和各按钮含义4.24.2添加并运用对话框添加并运用对话框 控件的选取控件的选取 选取单个控件,那么可以以下方法。选取单
30、个控件,那么可以以下方法。 用鼠标直接选取。用鼠标直接选取。 用助记符来选取。用助记符来选取。 用用Tab键选取。键选取。 对于多个控件的选取,可采用以下方法:对于多个控件的选取,可采用以下方法: 先在对话框内按住鼠标左键不放,拖出一个大的虚框,然后释放鼠标,那么被该虚框先在对话框内按住鼠标左键不放,拖出一个大的虚框,然后释放鼠标,那么被该虚框所包围的控件都将被选取。所包围的控件都将被选取。 先按住先按住Shift键不放,然后用鼠标选取控件,直到所需求的多个控件选取之后再释键不放,然后用鼠标选取控件,直到所需求的多个控件选取之后再释 放放Shift键。假设在选取时,对已选取的控件再选取一下,那
31、么取消该控件选取。键。假设在选取时,对已选取的控件再选取一下,那么取消该控件选取。 需求留意的是:需求留意的是: (1) 一旦单个控件被选取后,其周围由选择框包围着,选择框上还有几个一旦单个控件被选取后,其周围由选择框包围着,选择框上还有几个(通常通常是八个是八个)蓝色实心小方块,拖动它可改动控件的大小。蓝色实心小方块,拖动它可改动控件的大小。 (2)多个控件被选取后,其中只需一个控件的选择框有几个蓝色实心小方块,这个控多个控件被选取后,其中只需一个控件的选择框有几个蓝色实心小方块,这个控件称为主要控件,而其他控件的选择框的小方块是空心的。件称为主要控件,而其他控件的选择框的小方块是空心的。(
32、b)图4.15 单个控件和多个控件的选择框(a)4.24.2添加并运用对话框添加并运用对话框控件的删除、复制和规划控件的删除、复制和规划 与规划工具相对应的菜单命令在与规划工具相对应的菜单命令在“编排菜单下,而且大部分命令均有相应的编排菜单下,而且大部分命令均有相应的快捷键快捷键 图4.17 “编排菜单命令项4.24.2添加并运用对话框添加并运用对话框表表4.6 “编排菜单命令的快捷键及功能描画编排菜单命令的快捷键及功能描画 留意: 大多数布置控件的命令运用前,都需求用户选取多个控件,且“主要控件起到了关键作用。例如用户选取多个控件后,运用“Make Same Size命令只改动其它控件的大小
33、,并与“主要控件的尺寸一致。因此,在多个控件的布置过程中,常需求重新设置“主要控件。设置的方法是按住Ctrl或Shift键,然后用鼠标单击所要指定的控件即可。 为了便于用户在对话框内准确定位各个控件,系统还提供了网格、标尺等辅助工具。在图4.16的控件规划工具栏的最后两个按钮分别用来网格和标尺的切换。一旦网格显示,添加或挪动控件时都将自动定位在网格线上。 4.24.2添加并运用对话框添加并运用对话框 测试对话框测试对话框 “编排菜单下的编排菜单下的Test命令或规划工具栏上的测试按钮是用来模拟所编辑的对命令或规划工具栏上的测试按钮是用来模拟所编辑的对话框的运转情况,协助用户检验对话框能否符合用
34、户的设计要求以及控件功能能否有效话框的运转情况,协助用户检验对话框能否符合用户的设计要求以及控件功能能否有效等。等。 操作例如操作例如 向对话框添加一个静态文本控件。一个静态文本控件就是一个文本标签。向对话框添加一个静态文本控件。一个静态文本控件就是一个文本标签。 右击添加的控件,从弹出的快捷菜单中选择右击添加的控件,从弹出的快捷菜单中选择“属性。属性。 4.24.2添加并运用对话框添加并运用对话框 4.2.5创建对话框类创建对话框类 在对话框资源模板的空白区域内双击鼠标,在对话框资源模板的空白区域内双击鼠标,弹出对话框,讯问能否为对话框资源创弹出对话框,讯问能否为对话框资源创建一个新类。建一
35、个新类。 单击单击OK按钮,弹出按钮,弹出New Class对话框。对话框。Name框是用来输入用户定义的类名,单框是用来输入用户定义的类名,单击击Change按钮可改动默许的源文件称号按钮可改动默许的源文件称号及其在磁盘中的位置。从及其在磁盘中的位置。从Base class框的框的内容看出,用户对话框类是从基类内容看出,用户对话框类是从基类CDialog派生而来的。派生而来的。 在在Name框中输入类名框中输入类名CFirstDlg,单击,单击OK按钮,一个基于对话框资源模板的按钮,一个基于对话框资源模板的对话框类对话框类CFirstDlg就创建好了。此时,就创建好了。此时,出现出现MFC
36、ClassWizard(MFC类导游类导游)对话对话框。框。 4.24.2添加并运用对话框添加并运用对话框 4.2.6添加对话框代码添加对话框代码 在在MFC ClassWizard对话框,查看对话框,查看“Class name列表中能否选择了列表中能否选择了CFirstDlg,在,在IDs列表中选择列表中选择CFirstDlg,在,在Messages框中找到并选择框中找到并选择WM_INITDIALOG音讯。音讯。 单击Add Function按钮或双击WM_INITDIALOG音讯,MFC ClassWizard自动为CFirstDlg类添加OnInitDialog函数。WM_INITDI
37、ALOG是在对话框显示之前向父窗口发送的音讯,由于建立了此音讯和OnInitDialog函数的关联络统在对话框显示之前就会调用此函数,因此将对话框一些初始化代码添加到这个函数中。 4.24.2添加并运用对话框添加并运用对话框 在Member functions列表框中选择刚添加的OnInitDialog函数,单击Edit Code按钮(或直接在函数名双击鼠标),将自动出现该函数代码编辑窗口,在此函数中添加以下代码:BOOL CFirstDlg:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization hereC
38、Static* pWnd = (CStatic*)GetDlgItem(IDC_STATIC_1);pWnd-SetWindowText(这是我的第一个对话框!);return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE CStatic是静态文本控件的MFC类,SetWindowText是CWnd的一个成员函数,设置窗口的文本内容,由于控件类是CWnd的子类(派生类),因此可以运用基类的SetWindowText来改动静
39、态文本控件显示的内容。GetDlgItem也是CWnd类的一个成员函数,用来获得对话框中控件。 4.24.2添加并运用对话框添加并运用对话框 4.2.7在程序中运用对话框在程序中运用对话框 经过经过Ex_SDI的菜单项命令来显示前面添加的对话框,步骤如下:的菜单项命令来显示前面添加的对话框,步骤如下:(1)在工程任务区窗口中选择在工程任务区窗口中选择ResourceView页面,双击资源页面,双击资源“Menu项中的项中的IDR_MAINFRAME,在菜单的最后一项,输入新的菜单项。,在菜单的最后一项,输入新的菜单项。 4.24.2添加并运用对话框添加并运用对话框 (2) (2)在菜单的空位置
40、上双击鼠标左键,那么出现它的属性对话框,在标题框中输入在菜单的空位置上双击鼠标左键,那么出现它的属性对话框,在标题框中输入“测试测试(&T)(&T),其中符号,其中符号& &用来其后面的字符作为该菜单项的助记符,这样当按住用来其后面的字符作为该菜单项的助记符,这样当按住“AltAlt键不放,再敲击该助记符键时,对应的菜单项就会被选中,或在菜单翻开时,直接按键不放,再敲击该助记符键时,对应的菜单项就会被选中,或在菜单翻开时,直接按相应的助记符键,对应的菜单项也会被选中。相应的助记符键,对应的菜单项也会被选中。 4.24.2添加并运用对话框添加并运用对话框 (3) (3)单击菜单属性对话框中的单击
41、菜单属性对话框中的“保管可见保管可见(Keep Visible)(Keep Visible)按钮。单击按钮。单击“测试菜测试菜单项下方的空位置,在属性对话框中,输入标题单项下方的空位置,在属性对话框中,输入标题“对话框对话框(&D)(&D),在,在IDID框输入该菜单项框输入该菜单项的资源标识:的资源标识:ID_TEST_DLGID_TEST_DLG,单击属性对话框右上角的封锁按钮。,单击属性对话框右上角的封锁按钮。 4.24.2添加并运用对话框添加并运用对话框 (4) 用鼠标将新添加的菜单项拖到“查看和“协助菜单项之间。 (5) 选择“查看“建立类导游菜单命令或按Ctrl+W快捷键,出现MF
42、C ClassWizard对话框,并自动切换到Message Maps页面。从“Class name列表中选择CMainFrame,在IDs列表中选择ID_TEST_DLG,然后在Messages框中选择COMMAND音讯。 (6)单击Add Function按钮或双击COMMAND音讯,出现“Add Member Function对话框以输入成员函数的称号。系统默许的函数名为OnTestDlg,如图4.27所示。该函数是对菜单项ID_TEST_DLG的映射,也就是说,当在运用程序运转时,用户选择“对话框,那么该函数OnTestDlg被调用,执行函数中的代码。 4.24.2添加并运用对话框添加
43、并运用对话框 (7) (7)单击单击OKOK按钮,在按钮,在ClassWizardClassWizard的的“Member functionsMember functions列表中将列出新添加的列表中将列出新添加的成员函数。选择此函数,单击成员函数。选择此函数,单击Edit CodeEdit Code按钮按钮( (或直接在函数名双击鼠标或直接在函数名双击鼠标) ),在此成员,在此成员函数中添加以下代码:函数中添加以下代码:void CMainFrame:OnTestDlg() void CMainFrame:OnTestDlg() CFirstDlg dlg;CFirstDlg dlg;/ /
44、 定义对话框类对象定义对话框类对象dlg.DoModal();dlg.DoModal();/ / 显示对话框显示对话框 DoModal DoModal是是CDialogCDialog基类成员函数,它是用来显示和终止方式对话框。基类成员函数,它是用来显示和终止方式对话框。 (8)(8)在在OnTestDlgOnTestDlg函数的实现文件函数的实现文件MainFrm.cppMainFrm.cpp的前面添加的前面添加CFirstDlgCFirstDlg类的包含语句,类的包含语句,即:即:#include Ex_SDI.h#include Ex_SDI.h#include MainFrm.h#inc
45、lude MainFrm.h#include FirstDlg.h#include FirstDlg.h (9) (9)选择选择“测试测试 “ “对话框菜单项,这个对话框就是刚刚添加的对话框对话框菜单项,这个对话框就是刚刚添加的对话框 4.34.3运用导游创建对话框运用程序运用导游创建对话框运用程序 (1)选择“文件“新建菜单,在弹出的“新建对话框中选择“工程页面,选择MFC AppWizard(exe),在工程框中输入工程名Ex_DlgDemo。 (2)单击确定,在出现的“Step 1对话框中选择“根本对话运用程序类型。 4.34.3运用导游创建对话框运用程序运用导游创建对话框运用程序 (3
46、) (3)单击单击 下一个下一个 ,允许用户设置对话框的风格及,允许用户设置对话框的风格及ActiveXActiveX控件等特点的支持。控件等特点的支持。 (4)(4)单击单击 下一个下一个 ,除了窗口风格是,除了窗口风格是MFCMFC规范风格外,还有两个方面的选项可供用户规范风格外,还有两个方面的选项可供用户选择:一方面是在源文件中能否参与注释用来引导用户编写程序代码,另一方面是运用选择:一方面是在源文件中能否参与注释用来引导用户编写程序代码,另一方面是运用动态链接库还是静态链接库。动态链接库还是静态链接库。 4.3 4.3 运用导游创建对话框运用程序运用导游创建对话框运用程序(5)保管默许
47、选项,单击下一个 。(6)单击完成 ,单击确定按钮系统开场创建。(7)编译并运转。 4.44.4运用无方式对话框运用无方式对话框 方式对话框方式对话框 指当对话框被弹出,用户必需在对话框中作出相应的操作,在退出对话框之前,指当对话框被弹出,用户必需在对话框中作出相应的操作,在退出对话框之前,对话框所在的运用程序不能继续执行。对话框所在的运用程序不能继续执行。普通方式对话框会有普通方式对话框会有OK和和Cancel按钮。单出按钮。单出OK,认定对话框中的选择或输,认定对话框中的选择或输入有效;单击入有效;单击Cancel,对话框中的选择或输入无效。,对话框中的选择或输入无效。 无方式对话框无方式
48、对话框 在前面在前面Ex_SDI根底上创建并运用无方式对话框,其步骤如下:根底上创建并运用无方式对话框,其步骤如下: (1) 翻开前面的运用程序工程翻开前面的运用程序工程Ex_SDI。 (2)在该工程中添加一个对话框资源,将其标识符设为在该工程中添加一个对话框资源,将其标识符设为IDD_DIALOG_SECOND,标,标题设为题设为“无方式对话框,对话框字体和大小设为无方式对话框,对话框字体和大小设为“宋体,宋体,9号。号。 (3)为为IDD_DIALOG_SECOND对话框资源创建一个对话框类对话框资源创建一个对话框类CSecondDlg。 (4)按按Ctrl+W快捷键翻开快捷键翻开MFC
49、ClassWizard,选择,选择CSecondDlg,选择,选择IDOK,Messages框中选择框中选择BN_CLICKED,单击,单击Add Function或双击或双击BN_CLICKED,保管系统,保管系统默许的函数名为默许的函数名为OnOK。4.44.4运用无方式对话框运用无方式对话框 (5) (5)修正修正CSecondDlg:OnOKCSecondDlg:OnOK函数中的代码。函数中的代码。void CSecondDlg:OnOK() void CSecondDlg:OnOK() / / 添加其他代码运用户输入对话框的数据有效添加其他代码运用户输入对话框的数据有效Destroy
50、Window();DestroyWindow();/ / 终止对话框显示终止对话框显示delete this;delete this;/ / 删除对话框,释放内存空间删除对话框,释放内存空间 DestroyWindowDestroyWindow是对话框基类是对话框基类CWndCWnd的一个成员函数,用来终止窗口。的一个成员函数,用来终止窗口。 (6)(6)添加添加CancelCancel按钮按钮( (标识符为标识符为IDCANCEL)IDCANCEL)的的BN_CLICKEDBN_CLICKED音讯映射,并修正其映射函音讯映射,并修正其映射函数数CSecondDlg:OnCancelCSeco
51、ndDlg:OnCancel的代码。的代码。void CSecondDlg:OnCancel() void CSecondDlg:OnCancel() DestroyWindow();DestroyWindow();delete this;delete this; (7) (7)将工程任务区切换到将工程任务区切换到ClassView(ClassView(类视图类视图) )页面,展开页面,展开CMainFrameCMainFrame类的一切成员,类的一切成员,双击双击OnTestDlgOnTestDlg自动定位到该函数的实现代码处,将其修正:自动定位到该函数的实现代码处,将其修正:void CM
52、ainFrame:OnTestDlg() void CMainFrame:OnTestDlg() CSecondDlg CSecondDlg * *pDlg = new CSecondDlg;/ newpDlg = new CSecondDlg;/ new来为对话框分配内存空间来为对话框分配内存空间pDlg-Create( IDD_DIALOG_SECOND );pDlg-Create( IDD_DIALOG_SECOND ); / / 创建对话框创建对话框pDlg-ShowWindow( SW_NORMAL );pDlg-ShowWindow( SW_NORMAL );/ / 显示对话框显示
53、对话框 Create Create以一个对话框资源来创建对话框,以一个对话框资源来创建对话框,ShowWindowShowWindow是一个是一个CWndCWnd成员函数,用来显成员函数,用来显示对话框,示对话框,SW_NORMALSW_NORMAL用来指定将窗口显示成普通常用的形状。用来指定将窗口显示成普通常用的形状。 4.44.4运用无方式对话框运用无方式对话框 (8) (8) 在在OnTestDlgOnTestDlg函数的函数的MainFrm.cppMainFrm.cpp前面添加前面添加CSecondDlgCSecondDlg类的包含语句:类的包含语句:#include Ex_SDI.h
54、#include Ex_SDI.h #include MainFrm.h#include MainFrm.h #include FirstDlg.h#include FirstDlg.h#include SecondDlg.h“#include SecondDlg.h“ (9) (9)编译并运转。在运用程序菜单上,多次选择编译并运转。在运用程序菜单上,多次选择“测试测试 “ “对话框菜单项,将对话框菜单项,将会在同一个位置中出现多个对话框,拖动这些对话框到适当位置。会在同一个位置中出现多个对话框,拖动这些对话框到适当位置。 方式和无方式对话框在用编辑器设计和运用方式和无方式对话框在用编辑器设计
55、和运用MFC ClassWizardMFC ClassWizard创建用户对话框类的创建用户对话框类的方法是一致的,但在对话框的创建和退出的方式是不同的。创建时,方式对话框是由系方法是一致的,但在对话框的创建和退出的方式是不同的。创建时,方式对话框是由系统自动分配内存空间,对话框退出时,对话框对象自动删除;无方式对话框那么需求用统自动分配内存空间,对话框退出时,对话框对象自动删除;无方式对话框那么需求用户来指定内存,退出时还需本人来删除对话框对象。户来指定内存,退出时还需本人来删除对话框对象。 4.54.5通用对话框和音讯对话框通用对话框和音讯对话框 4.5.1通用对话框通用对话框 Windo
56、ws提供了一组规范用户界面对话框,它们都有相应的提供了一组规范用户界面对话框,它们都有相应的MFC库中的类来支持。一切库中的类来支持。一切这些通用对话框类都是从一个公共的基类这些通用对话框类都是从一个公共的基类CCommonDialog派生而来。派生而来。这些对话框有一个共同特点:都从用户获取信息,并不对信息作处置。这些对话框有一个共同特点:都从用户获取信息,并不对信息作处置。 一个运用一个运用CFileDialog类例如类例如 ,详细的步骤如下:详细的步骤如下: (1)翻开前面的运用程序工程翻开前面的运用程序工程Ex_SDI。 (2)将工程任务区切换到将工程任务区切换到ClassView(类视图类视图)页面,展开页面,展开CMainFrame类的一切成员,双类的一切成员,双击击OnTestDlg就会在文档窗口中自动定位到该函数的实现代码处,将其修正成以下代码:就会在文档窗口中自动定位到该函数的实现代码处,将其修正成以下代码: 4.54.5通用对话框和音讯对话框通用对话框和音讯对话框void CMainFrame:OnTestDlg() CString filter;filter = 文本文件(*.txt)|*.tx
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学各科目重点试题及答案
- 2026年9月开学第一课收心教育课件(小升初学生):收心励志拼搏向前
- 【2026年】乡村学校德育工作经验总结课件-家校共育的德育实践
- 水泥混凝土路面边缘钢筋安装施工工艺
- 2026年家政服务员技能资格考试试题及答案解析
- 衡重式挡土墙施工工艺
- 后浇带防水加强施工工艺
- 医院慢性病管理制度范文
- 2026年节能环保知识竞赛题库及答案
- 墙柱与梁板节点混凝土浇筑施工工艺
- 2025年国际经济法自考真题及答案
- 2027届高考语文复习:厘清语法逻辑 解锁语用考题 课件
- 2026秋新教材译林版(三起)小学英语六年上册(全册)各单元测试卷及答案
- 2026天津地铁1号线综合站务员招聘笔试备考试题及答案详解
- GB/T 47968-2026构网型变流器通用技术规范
- 培智数学16册全册教学设计
- 自动化胰岛素输注系统临床应用护理专家共识(2026版)
- 2026年秋季小学数学苏教版六年级上册数学教学计划含教学进度表
- 2026年部编版新教材道德与法治小学三年级上册全册教案(含教学计划)
- GB/T 17285-2022电气设备电源特性的标记安全要求
- YS/T 498-2006电解沉积用铅阳极板
评论
0/150
提交评论