2009级VC第3章.ppt

上传人:本田雅阁 文档编号:2879426 上传时间:2019-06-01 格式:PPT 页数:40 大小:612.52KB
返回 下载 相关 举报
2009级VC第3章.ppt_第1页
第1页 / 共40页
2009级VC第3章.ppt_第2页
第2页 / 共40页
2009级VC第3章.ppt_第3页
第3页 / 共40页
2009级VC第3章.ppt_第4页
第4页 / 共40页
2009级VC第3章.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《2009级VC第3章.ppt》由会员分享,可在线阅读,更多相关《2009级VC第3章.ppt(40页珍藏版)》请在三一文库上搜索。

1、第3章 对话框,3.1 创建对话框,例Ex_DlgDemo 使用向导创建对话框应用程序 (1) 选择“文件”“新建”菜单,在弹出的“新建”对话框中选择“工程”页面,选择MFC AppWizard(exe),在工程框中输入项目名Ex_DlgDemo。,(2) 单击确定按钮,在出现的“Step 1”对话框中选择“基本对话(框)”应用程序类型,如图所示。,(3) 单击下一个按钮,出现如图(右)所示的对话框,允许用户设置对话框的风格及ActiveX控件等特点的支持。,(4) 单击下一个按钮出现如图(左)所示的对话框,两个方面的选项可供用户选择:一是在源文件中是否加入注释用来引导用户编写程序代码,另一是

2、使用动态链接库还是静态链接库。,(5) 保留默认选项,单击下一个按钮出现如图(右)所示的对话框。,(6) 单击完成按钮出现一个对话框,显示出用户在前面几个步骤中作出的选择内容,单击确定按钮系统开始创建。,1. 资源的分类 创建一个默认的单文档应用程序项目Ex_SDI1,并其项目工作区窗口切换到“ResourceView”页面,Ex_SDI1资源视图:,Visual C+ 6.0使用的资源可分为下列几类: 快捷键列表(Accelerator):一系列组合键的集合,被应用程序用来引发一个动作。 对话框(Dialog):含有按钮、列表框、编辑框等各种控件的窗口。图标(Icon):代表应用程序显示在W

3、indows桌面上的位,它同时有3232像素和1616像素两种规格。 菜单(Menu):用户通过菜单完成应用程序的大部分操作。 字串表(String Table):应用程序使用的全局字符串或其他标识符。 工具栏按钮(Toolbar):工具栏外观是以一系列具有相同尺寸的位图组成的 版本信息(Version):包含应用程序的版本、用户注册码等相关信息。,当添加或创建资源或资源对象时,系统会为其提供默认的名称,如IDR_MAINFRAME等。要遵循下列规则:,2. 标识符,(1) 在标识符名称中允许使用字母az、AZ、09以及下划线。 (2) 标识符名称不区分大小写字母,如new_idd与New_I

4、dd是相 同的标识符。 (3) 不能以数字开头,如8BIT是不合法的标识符名。字符个数不得超过247个。,Visual C+还提供了一些常用的定义标识符名称的前缀供用户使用、参考,每一个定义的标识符都保存在应用程序项目的Resource.h文件中,它的取值范围为032767。,字符个数不得超过247个。除了上述规则外,出于习惯,Visual C+还提供了一些常用的定义标识符名称的前缀供用户使用、参考,见下表 。,3.2.2 添加对话框资源,例Ex_SDI 在单文档程序中添加对话框资源 创建一个默认的单文档应用程序项目Ex_SDI。 (1) 选择“插入”“资源”菜单,或按快捷键Ctrl+R打开“

5、插入资源” 对话框中看到资源列表中存在Dialog项,若单击Dialog项左边的“+”号,将展开对话框资源的不同类型选项,表列出各种类型的对话框资源的不同用途。“插入资源”对话框 :,新建按钮用来创建一个由“资源类型”列表中指定类型的新资源。 定制按钮是用来创建“资源类型”列表中没有的新类型的资源。 导入按钮是用于将外部已有的位图、图标、光标或其他定制的资源添加到当前应用程序中。,(2) 对展开的不同类型的对话框资源不作任何选择,选中“Dialog”,单击新建按钮,系统就会自动为当前应用程序添加了一个对话框资源。,系统为对话框资源自动赋给它一个默认标识符名称 使用通用的对话框模板创建新的对话框

6、资源。对话框的默认标题为Dialog,有OK和Cancel两个按钮,这两个按钮的标识符分别为IDOK和IDCANCEL。 对话框模板资源所在的窗口称为对话框资源编辑,在这里可以通过控件工具栏和布局工具栏向对话框添加和布局控件,并可设置对话框的属性。 Visual C+6.0开发环境的工具栏具有“浮动”与“停泊”功能,图中的控件工具栏是处于“浮动”状态,通常将它拖放到窗口右侧,以便于操作。,3.2.3 设置对话框属性,在对话框模板处右击鼠标,从弹出的快捷菜单中选择“属性”菜单项,出现如图所示的对话框属性窗口。,对话框的属性有General(一般)、Styles(风格)、More Styles(更

7、多)、Extended Styles(扩展风格)、MoreExtended Styles(更多扩展风格)等部分,这里仅介绍最常用的General属性。,对话框的General属性,将添加对话框的General属性进行如下三点修改, 将对话框标识符改成IDD_DIALOG_FIRST; 将对话框标题改为“我的第一个对话框”; 单击字体按钮,通过弹出的字体对话框将对话框内的文本设置成“宋体,9” ,以使自己的对话框和Windows中的对话框保持外观上的一致。,3.2.4 添加和布局控件,1. 控件的添加 对话框编辑器最初打开时,控件工具栏是随之出现的,利用 此工具栏中的各个按钮可以顺利完成控件的添

8、加。说明了各个图标按钮所对应的控件类型。,按住Ctrl键则复制控件。按Del键可将选取的控件删除。对控件的布局,对话框编辑器中提供了控件布局工具栏可以自动地排列对话框内的控件,并能改变控件的大小。,2. 控件的选取,3. 控件的删除、复制和布局,4. 测试对话框 “编排”菜单下的Test命令或布局工具栏上的测试按钮 是用来模拟所编辑的对话框的运行情况,帮助用户检验 对话框是否符合用户的设计要求以及控件功能是否有效 等。如图 (右下)。,右击添加的控件,从快捷菜单中选择“属性”,出现如 图(左上),3.2.5 创建对话框类,在应用程序中使用添加的对话框须先为该对话框模板创建 一个用户对话框类。在

9、对话框资源模板的空白区域(没有其他 元素或控件)内双击鼠标,将弹出对话框,单击OK按钮,弹出 右图所示的对话框。,在Name框中输入类名CFirstDlg,单击OK按钮,一个基于 对话框资源模板的用户对话框类CFirstDlg就创建好了。此时 出现MFC ClassWizard(MFC类向导)对话框。,3.2.6 添加对话框代码,在MFC ClassWizard对话框中,可以看到“Class name”组合框已经是CFirstDlg。,单击Add Function按钮或双 击WM_INITDIALOG消息,MFC ClassWizard自动为CFirstDlg 类添加OnInitDialog函

10、数。,在Member functions表框中选择刚添加 的OnInitDialog,单击Edit Code 将出现函数代码编辑窗口,在函数中添码: BOOL CFirstDlg:OnInitDialog() CDialog:OnInitDialog(); Static *pWnd=(CStatic*)GetDlgItem (IDC_STATIC_1); pWnd-SetWindowText (“这是我的 第一个对话框!“); return TRUE; / return TRUE unless you set the focus to a control ,3.2.7 在程序中使用对话框,(1

11、) 在项目工作区窗口中选择ResourceView页面, 双击资源“Menu”项中的IDR_MAINFRAME,则菜单 编辑器窗口出现在主界面的右边,相应的Ex_SDI项 目的菜单资源被显示出来,在菜单的最后一项,Vis ual C+为用户留出了一个空位置,用来输入新的菜 单项,如图 :,(2) 在菜单的空位置上双击鼠标左键,则出现它的属性 对话框,在标题框中输入“测试(&T)”,结果如图所示,其 中符号&用来其后面的字符作为该菜单项的助记符,这样 当按住“Alt”键不放,再敲击该助记符键时,对应的菜单项 就会被选中,或在菜单打开时,直接按相应的助记符键, 对应的菜单项也会被选中。,(3) 单

12、击菜单属性对话框中的“保存可见”(Keep Visible) 按钮,使此属性对话框一直可见,以方便操作。单击“测 试”菜单项下方的空位置,在属性对话框中,输入标题“对 话框(_TEST_DLG, 结果如图所示,单击属性对话框右上角的关闭按钮。,(4) 用鼠标将新添加的菜单项拖到“查看”和“帮助”菜单项 之间,结果如图所示。,菜单项“对话框”拖放后的位置 (5) 选择“查看”“建立类向导”菜单命令或直接按Ctrl+W快 捷键,则出现MFC ClassWizard对话框,该对话框会自动 切换到Message Maps页面。 (6) 从“Class name”组合框中选择CMainFrame,在Ob

13、ject Ids 列表中选择ID_TEST_DLG,然后在Messages框中选择CO MMAND消息。,(7) 单击Add Function按钮或双击COMMAND消息,出 现“Add Member Function”对话框以输入成员函数的名称。系统默认的函数名为OnTestDlg,如图所示。该函数是对菜单项ID_TEST_DLG的映射,也就是说,当在应用程序运行时,用户选择“对话框”,则该函数OnTestDlg被调用,执行函数中的代码。,单击OK按钮,在ClassWizard的“Member functions”列 表中将列出新增加的成员函数。选择此函数,单击Edit Co de按钮(或直

14、接在函数名双击鼠标),在此成员函数中添加下 列代码: void CMainFrame:OnTestDlg() CFirstDlg dlg; / 定义对话框类对象 dlg.DoModal(); / 显示对话框 代码中,DoModal是CDialog基类成员函数,它是用来显示和终止模式对话框。,在OnTestDlg函数的实现文件MainFrm.cpp的前面添加 CFirstDlg类的头文件包含,即:,#include “Ex_SDI.h“ #include “MainFrm.h“ #include “FirstDlg.h“,(10) 编译并运行。在应用程序菜单上,选择“测试” “对 话框”菜单项,

15、将出现如图的对话框,这个对话框就是刚 才添加的对话框。,4.3 使用无模式对话框,1. 模式对话框 所谓“模式对话框”是指当对话框被弹出,用户必须在对话框中作出相应的操作,在退出对话框之前,对话框所在的应用程序不能继续执行。 一般情况下,模式对话框会有OK(确定)和Cancel(取消)按钮。单出OK按钮,系统认定用户在对话框中的选择或输入有效,对话框退出;单击Cancel按钮,对话框中的选择或输入无效,对话框退出,程序恢复原有状态。 模式对话框的应用范围较广,上面示例中的对话框和平常所见到的大多数对话框都是模式对话框。,所谓“无模式对话框”是指当对话框被弹出后,一直保留 在屏幕上,用户可继续在

16、对话框所在的应用程序中进行其 它操作;当需要使用对话框时,只需象激活一般窗口一样 单击对话框所在的区域即可激活。,2. 无模式对话框,例Ex_Modeless 创建并使用无模式对话框 用MFC AppWizard(exe)创建一个默认的单文档应用程 序x_Modeless。 (2) 在该项目中添加一个对话框资源,将其标识符设为IDD_DIALOG_SECOND,标题设为“无模式对话框”, (3) 对话框字体和大小设为“宋体,9号”。为IDD_DIALOG_SECOND对话框资源创建一个 对话框类CSecondDlg。,按Ctrl+W快捷键打开MFC ClassWizard,从“Class na

17、me”列表中选择CSecondDlg,在IDs列表中选择IDOK, 是对话框中OK 按钮的标识符,然后在Messages框中 选择BN_CLICKED(单击按钮)消息,单击Add Function 按钮或双击BN_CLICKED消息,出现“Add Member Function”对话框以输入成员函数的名称,保留系统默 认的函数名为OnOK,如图所示。,(5) 修改CSecondDlg:OnOK函数中的代码。 void CSecondDlg:OnOK() / 添加其他代码使用户输入对话框的数据有效 DestroyWindow(); / 终止对话框显示 delete this; / 删除对话框,释

18、放内存空间 代码中,DestroyWindow是对话框基类CWnd的一个成员函数, 用来终止窗口。 添加Cancel按钮(标识符为IDCANCEL)的BN_CLICKED 消息映射,并修改其映射函数CSecondDlg:OnCancel的代码。 void CSecondDlg:OnCancel() / 单击Cancel(取消)按钮 DestroyWindow(); delete this; ,在项目工作区窗口中选择ResourceView页面,双击资源“Menu”项中的IDR_MAINFRAME,打开菜单资源。 (8) 在菜单“查看”与“帮助”之间添加一个“测试(&T)”菜单,该菜单项的资源标

19、识设为ID_TEST_DLG。 (9) 按Ctrl+W快捷键,打开MFC ClassWizard对话框,在Message Maps页面中从“Class name”列表中选择CMainFrame,在Object IDs列表中选择ID_TEST_DLG,然后在Messages框中选择COMMAND消息。,单击Add Function按钮或双击COMMAND消息,出现 “Add Member Function”对话框,取系统默认的函数名OnTestDlg,并在此成员函数中添加下列代码:,void CMainFrame:OnTestDlg() CSecondDlg *pDlg = new CSecon

20、dDlg; / 使用new为对分配内存空间, CSecondDlg为类名 pDlg-Create( IDD_DIALOG_SECOND ); / 创建对话框, IDD_DIALOG_SECOND为对话框名 pDlg-ShowWindow( SW_NORMAL ); / 显示对话框 ,代码中,Create可用来以一个对话框资源来创建对话框, ShowWindow是一个CWnd成员函数,用来显示对话框, SW_NORMAL是用来指定将窗口显示成一般常用的状态。,在文件MainFrm.cpp前面添加CSecondDlg类的文件包含 #include “MainFrm.h“ #include “Sec

21、ondDlg.h“,编译并运行。在应用程序菜单上,多次选择“测试” “对 话框”菜单项,将会在同一个位置中出现多个对话框,拖动这 些对话框到适当位置,如图:,这就是无模式对话框的效果,从上述示例可以看出:模式和无模式对话框在用 编辑器设计和使用 MFC ClassWizard创建用 户对话框类的方法是一致 的,但在对话框的创建和 退出的方式是不同的。,3.4.1 通用对话框,表 MFC的通用对话框,这些对话框都有一个共同特点:它们都从用户获取信息,但并不对信息作处理。,3.4.1 通用对话框,选定一个文件后,单击打开按钮,就会弹出一个消息对话框,显示该文件的全路径名称。,void CMainF

22、rame:OnTestDlg() CString filter; filter = “文本文件(*.txt)|*.txt|C+文件 (*.h,*.cpp)|*.h;*.cpp|“; CFileDialog dlg (TRUE, NULL, NULL, OFN_HIDEREADONLY, filter); if (dlg.DoModal () = IDOK) CString str; str = dlg.GetPathName(); AfxMessageBox(str); ,代码中,CString是MFC中的一个类,用来操作字符串。,通用文件对话框类CFileDialog的构造函数的原型如下:

23、CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_O VERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );,函数原型中,LPCTSTR类型用来表示一个常值字符指针, 这里可以将其理解成是一个常值字符串类型。上述代码中, AfxMessageBox用来弹出一个消息对话框(后面还要讨论)。 GetPathName是CFileDialog类成员函数,用来获取文件的 全路径名。,3.4.2 消息对话框,消息对话框是最简单的一类对话框,用来显示信息的。,消息对话框常用按钮类型,void CMainFrame:OnTestDlg() int nChoice=MessageBox(“你喜欢VC+吗?“, “提问“, MB_OKCANCEL|MB_ICONQUESTION); if (nChoice=IDOK) Cf1 dlg; dlg.DoModal(); ,实验题目,1、例2.3 2、例3.2 3、例3.3,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1