当前位置:首页 > 商业/管理/HR > 销售管理 > 第6章 VC++创建和使用对话框框
第6章创建和使用对话框框6.1对话框的基本原理•对话框(Dialog)实际上是一个窗口.在MFC中,对话框的功能被封装在了CDialog类中,CDialog类是CWnd类的派生类.•对话框分为模态对话框和非模态对话框两种.当一个模态对话框打开时,用户只能与该对话框进行交互,而其它用户界面对象收不到输入信息.6.1对话框的基本原理从MFC编程的角度来看,一个对话框由两部分组成:•对话框模板资源.对话框模板用于指定对话框的控件及其分布,Windows根据对话框模板来创建并显示对话框.•对话框类.对话框类用来实现对话框的功能,由于对话框行使的功能各不相同,因此一般需要从CDialog类派生一个新类,以完成特定的功能.对话框类型•1.模式对话框不允许用户在关闭对话框之前切换到应用程序的其他窗口•2.无模式对话框允许用户在该对话框与应用程序其他窗口之间的切换创建和使用对话框的过程•设计对话框资源•设计对话框类•调用对话框6.2设计对话框资源•创建对话框•增加控件•设置控件属性•组织和安排控件•测试对话框6.2设计对话框资源创建对话框步骤:•1.使用AppWizard生成一个单文档应用程序Exam6_1。•2.选择Insert|Resource菜单项•3.在弹出的对话框中选择Dialog,单击New按钮。•4.在项目工作区中展开DIalog资源。6.2设计对话框资源•增加控件控件能够放置在一个对话框中,提供应用程序与用户的交互,使用控件工具栏。•设置控件属性一个控件的相关属性设置决定了一个控件的可操作行为和显示效果,例如设置控件的ID,Caption等属性。设置控件属性•ID属性。用于指定控件的标识符,Windows依靠ID来区分不同的控件。•Caption(标题)属性。静态正文、组框、按钮、检查框、单选按钮等控件可以显示标题,用来对控件进行文字说明。•Visible属性。用来指定控件是否是可见的。•Disable属性。使控件允许或禁止,一个禁止的控件呈灰色显示,不能接收任何输入。6.2设计对话框资源•组织和安排控件Align:提供了6种控件对齐方式。左、右、上、下、水平、垂直。SpaceEvenly:2种等间距方式,垂直和居中。MakeSameSize:3种等尺寸方式,宽相等,高相等,宽高都相等。CenterinDialog:2种居中方式,水平和垂直。6.3设计对话框类•创建对话框类•创建对话框成员变量•values•controls•对话框数据交换和校验(DDX和DDV)创建对话框类•ClassWizard创建对话框成员变量•对话框需要有一组成员变量来存储数,存储数据的成员变量应该与控件相对应。•ClassWizard|MemberVariables•成员变量的类型•values•controls•例如,可以为一个编辑框控件指定一个数据变量,这样就可以很方便地取得或设置编辑框控件所代表的数据,如果想对编辑框控件进行控制,则应该为编辑框指定一个CEdit对象,通过CEdit对象,程序员可以控制控件的行为。对话框的初始化•对话框的初始化工作一般在构造函数和OnInitDialog函数中完成。•在构造函数中的初始化主要是针对对话框的数据成员。对话框数据交换和校验•DDX•对话框对象成员与控件之间的数据交换•DDV•数据有效性验证有时需要应用程序对用户的输入进行及时反馈Dialogdataexchange•对话框的数据成员变量存储了与控件相对应的数据。数据变量需要和控件交换数据,以完成输入或输出功能。•例如,一个编辑框即可以用来输入,也可以用来输出:用作输入时,用户在其中输入了字符后,对应的数据成员应该更新;用作输出时,应及时刷新编辑框的内容以反映相应数据成员的变化。•对话框需要一种机制来实现这种数据交换功能。UpdateData函数•UpdateData(false)•将对话框对象的数据成员值传送到控件•UpdateData(true)•将控件中的值传送到对话框对象相应的数据成员调用模式对话框•创建一个对话框对象•初始化对话框•调用CDialog::DoModal函数打开对话框•确定返回的处理调用无模式对话框•无模式对话框的设计与模式对话框基本类似,也包括设计对话框模板和设计CDialog类的派生类两部分。•但是,在对话框的创建和删除过程中,非模态对话框与模态对话框相比有下列不同之处:•调用无模式对话框•1.Visible属性•无模式对话框的模板必须具有Visible风格,否则对话框将不可见,而模式对话框则无需设置该项风格。更保险的办法是调用CWnd::ShowWindow(SW_SHOW)来显示对话框,而不管对话框是否具有Visible风格。调用无模式对话框•2.创建方式由于无模式对话框在程序运行时可以一直存在,所以不能以局部变量的形式创建,只能用new运算符动态创建。•3.窗口创建方式通过调用CDialog::Create函数来启动对话框,而不是CDialog::DoModal,这是与模式对话框的不同所在。调用无模式对话框•4.窗口删除函数无模式对话框必须调用CWnd::DestroyWindow而不是CDialog::EndDialog来关闭。•5.清理对话框对象的方式因为是用new操作符构建非模态对话框对象,因此必须在对话框关闭后,用delete操作符删除对话框对象。调用CWnd::PostNcDestroy,这是一个虚拟函数,程序可以在该函数中完成删除窗口对象的工作。通用对话框•在使用Windows的过程中,用户经常会遇到一些常用的有特定用途的对话框。例如,当选择File-Open,会弹出一个文件选择的对话框,用户可以在其中选择想要打开的文件。•Windows系统本身提供了对该对话框的支持,用户不必自己设计文件选择对话框。与文件选择对话框类似的还有颜色选择、字体选择、打印和打印设置以及正文搜索和替换对话框。这五种对话框均由Windows支持,被称为通用对话框。•MFC提供了一些通用对话框类,它们均是CDialog类的派生类通用对话框通用对话框类用途CColorDialog选择颜色CFileDialog选择文件名,用于打开和保存文件CFindReplaceDialog正文查找和替换CFontDialog选择字体CPrintDialog打印和打印设置
本文标题:第6章 VC++创建和使用对话框框
链接地址:https://www.777doc.com/doc-3404594 .html