54
第 5 第 第第第 5.1 对对对对对 5.2 对对对对对 5.3 对对对对对对 5.4 对对对对对对 5.5 对对对对对 5.6 对对对对 Visual C++ Visual C++ 对对对对对对对对对 对对对对对对对对对

第 5 章 对话框 5.1 对话框概述 5.2 模式对话框 5.3 非模式对话框 5.4 属性页对话框 5.5 通用对话框 5.6 应用实例

  • Upload
    salene

  • View
    122

  • Download
    11

Embed Size (px)

DESCRIPTION

第 5 章 对话框 5.1 对话框概述 5.2 模式对话框 5.3 非模式对话框 5.4 属性页对话框 5.5 通用对话框 5.6 应用实例. Visual C++ 程序设计与应用教程. 5.1 对话框概述. 5.1.1 对话框的类型. 主要有以下两种: 模式 (Model) 对话框 无模式 (Modeless) 对话框. 5.1.2 对话框的 CDialog 类. - PowerPoint PPT Presentation

Citation preview

Page 1: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

第 5 章 对话框 5.1 对话框概述 5.2 模式对话框 5.3 非模式对话框 5.4 属性页对话框 5.5 通用对话框 5.6 应用实例

Visual C++Visual C++ 程序设计与应用教程程序设计与应用教程

Page 2: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

2第 5章 对话框

5.1 对话框概述5.1.1 对话框的类型

主要有以下两种: 模式 (Model) 对话框 无模式 (Modeless) 对话框

Page 3: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

3第 5章 对话框

5.1.2 对话框的 CDialog 类

CObject

CCmdTarget

CWnd

CDialog

CDialog 类从 CWnd类派生而来,所以它继承了 CWnd 类的成员函数,具有 CWnd 类的基本功能,可以编写代码移动、显示或隐藏对话框,并能根据对话框的特点增加新的成员函数,扩展它的功能。

Page 4: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

4第 5章 对话框

Page 5: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

5第 5章 对话框

Page 6: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

6第 5章 对话框

对话框主要由以下两部分组成:(1) 对话框模板:对话框模板定义了对话框的特性( 比如大小、位置和风格 ) 以及对话框中每个控件的类型和位置。(2) 对话框类:从 CDialog 类派生的对话框类提供编程接口来管理对话框。

5.1.3 对话框的组成

Page 7: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

7第 5章 对话框

5.2 模态对话框对于模式对话框的编程可以按以下步骤进行。(1) 根据要求创建对话框模板。(2) 使用 ClassWizard 创建对话框类并进行各类事件函数的代码编写。(3) 对视图类进行编辑,以便对话框能够被激活。

Page 8: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

8第 5章 对话框

5.2.1 设计对话框模板资源 打开对话框编辑器 :

使用菜单【 Insert|Resource 】打开 Insert Resource 对话框,选中 Dialog 后单击 New 按钮。使用项目的 ResourceView ,找到 Dialog 资源,右击后选择 Insert Dialog 。

对话框编辑器如下图所示。

Page 9: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

9第 5章 对话框

对话框模板控件布局工具栏 控件工具栏

Page 10: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

10第 5章 对话框

对话框模板

Controls 工具Dialog 工具栏

调整对话框显示时的大小和位置 拖放各种类型的控件到对话框中

调整控件的位置,测试对话框的外观和行为

Page 11: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

11第 5章 对话框

设计对话框模板资源有两个重要的内容 :从 Controls 工具栏中选择控件( Control ,功能各异的小小零组件)加到对话框中,并调整其位置和大小设置控件的 Caption 、 ID 以及其他属性

Page 12: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

12第 5章 对话框 1 .增加或删除控件

控件的选择

静态文本

分组框

复选框

组合框

水平滚动条

旋转按钮

滚动条

列表视图

标签

复合编辑 月历

用户定制工具

图片

编辑框

命令按钮

单选按钮

列表框

垂直滚动条

进度条

热键

树形视图

动画

日期选择

IP地址

组合框的扩展

增加控件 :

从控件工具栏中选中要增加的控件,再将此控件拖动至对话框模板中的确定位置上删除控件 :

先单击对话框中的控件,再按 Delete 键

Page 13: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

13第 5章 对话框 2.设置控件属性

属性设置在与每个控件相对应的属性对话框中进行。

打开控件属性对话框 :

在控件上右击鼠标,在弹出的快捷菜单中选择 Properties

选择控件,选择 View|Properties 菜单项

Page 14: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

14第 5章 对话框

控件属性对话框

Page 15: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

15第 5章 对话框

对话框的属性也是在对话框的属性对话框中设置。 在对话框任意空白处单击鼠标右键,在弹出的快捷菜单中选择 Properties 。

Page 16: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

16第 5章 对话框

3 .测试对话框的运行效果

测试对话框的方法有下面 3 种: 选择菜单项 Layout |Test 。 单击布局工具栏上的 Test 按钮。 按快捷键 Ctrl+T 。

Page 17: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

17第 5章 对话框

【例 5.1 】创建一个单文档的应用程序 MyDialog ,向应用程序中添加如图所示的对话框模板资源,并设置控件的 Caption 、 ID 属性。

Page 18: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

18第 5章 对话框

5.2.2 设计对话框类

主要包括下面几个方面:从 MFC 的 CDialog 中派生出一个类,用来负责对话框行为。利用 ClassWizard 把这个类和已编辑完成的对话框资源连接起来。 这意味着必须声明某些函数,用以处理相应的对话框消息,并将对话框中的控件对应到类的成员变量上,这也就是所谓的对话框数据交换( DDX , Dialog Data eXchange) 。如果对这些变量内容有“确认规则”的话, ClassWizard 也允许设定,这就是所谓的对话框数据验证( DDV , Dialog Data Validation) 。对话框的初始化。

Page 19: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

19第 5章 对话框

1. 创建对话框类【例 5.2 】完善例 5.1 中的应用程序 MyDialog ,给对话框资源添加相应的对话框类。

Page 20: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

20第 5章 对话框

2. 创建对话框成员变量 ClassWizard 类向导的 Member Variables页面用来为对话框类添加和删除与对话框控件关联的成员变量。

Page 21: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

21第 5章 对话框

【例 5.3】继续完善例 5.2 中的应用程序,在对话框类中添加与控件相关联的成员变量。

Page 22: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

22第 5章 对话框

3.对话框的初始化

使用以下 3 种方法 :

(1) 在构造函数中初始化 主要针对对话框的数据成员。(2) WM_CREATE 初始化(3) WM_INITDIALOG 初始化

Page 23: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

23第 5章 对话框

5.2.3 运行对话框模态对话框的运行分两个步骤:创建一个对话框对象调用 CDialog::DoModal() 函数打开对话框 DoModal() 函数负责模态对话框的创建和撤消,可以根据其回值是 IDOK还是 IDCANCEL 来判断用户关闭对话框时按的哪一个键。

Page 24: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

24第 5章 对话框

【例 5.4 】完善例 5.3 中的应用程序,通过【对话框 |模态对话框】菜单项,打开上述标题为“输入边长”的对话框,并根据输入的边长画一个正方形。

Page 25: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

25第 5章 对话框

5.2.4 对话框数据交换和校验机制

CDialog 类通过调用其成员函数 DoDataExchange()实现对话框数据交换和验证,在 DoDataExchange() 中使用了 MFC 提供的 CDataExchange 类,该类实现对话框类的成员变量与控件之间的数据交换 DDX 和数据验证 DDV 。 DDX 将成员变量与对话框控件相连接,完成数据在成员变量和控件之间的交换。 DDV 用于数据的校验,它能自动校验输入的数据 ( 如字符串的长度或数值的范围 ) 是否符合设计要求。

Page 26: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

26第 5章 对话框

DoDataExchange()函数由框架调用。在应用程序 MyDialog中,可以找到下列函数:void CSquare::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CSquare)

DDX_Text(pDX, IDC_LENGTH, m_length);

DDV_MinMaxInt(pDX, m_length, 10, 200);

//}}AFX_DATA_MAP

}

DDX函数调用语句,表明m_length是一个 Value值类别的成员变量,用于交换 IDC_LENGTH控件中内容 DDV 函数调用语句,程序运行后,如果用户的输入数据超出 10 ~ 200的范围, DDV 将显示提示信息对话框,提示用户有效的输入范围

Page 27: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

27第 5章 对话框

控件与成员变量之间的数据交换通过调用 UpdateData() 函数进行。UpdateData() 函数只有一个 BOOL类型的参数当参数为 TRUE时, MFC通过调用 DoDataExchange() 函数将数据从控件传递到关联的成员变量当参数为 FALSE时,数据从成员变量传递到关联的控件。如下图所示。

Page 28: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

28第 5章 对话框

成员

变量

UpdateData(TRUE)

UpdateData(FALSE)

更新后重

新获取成

员变量

初始化

成员变量

Page 29: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

29第 5章 对话框

5.3 非模态对话框

5.3.1 非模态对话框的特点与模态对话框比较:相同:创建对话框资源、添加对话框类、添加成员变量和消息处理函数的方法不同:创建和退出对话框的方式

Page 30: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

30第 5章 对话框

1.Visible 属性 模态对话框不需要设置该属性,而非模态对话框必须具有 Visible 风格,否则对话框是不显示的。 另一种方法是调用 CWnd::ShowWindow(SW_ SHOW) 来显示对话框。

Page 31: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

31第 5章 对话框

2. 对话框窗口的创建方式 非模态对话框的创建是通过调用 CWnd::Create() 函数来实现的。 Create() 函数与 DoModal() 函数不同之处是: Create() 创建对话框后立即返回,而 DoModal() 函数在对话框关闭后才会返回。

Page 32: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

32第 5章 对话框

3. 对话框对象的创建方式 由于在 Create()返回后,不能确定对话框是否已关闭,这样也就无法确定对话框对象的生存期,所以不能以局部变量的形式创建非模态对话框的对象,只能用 new操作符动态创建,并且在调用对话框类的窗口类内声明一个指向对话框类的指针变量,通过该指针访问对话框对象。

Page 33: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

33第 5章 对话框

4.窗口删除函数 非模态对话框必须调用 CWnd::DestoryWindow()来关闭对话框。 模态对话框是调用 CDialog::EndDialog()关闭对话框。由于默认的对话框函数 OnOK() 和 OnCancel()都是调用 EndDialog()关闭对话框的,该函数使对话框不可见但不删除对话框对象。所以非模态对话框类要定义自己的 OnOK() 和 OnCancel() 函数,调用 DestoryWindow() 来关闭对话框。

Page 34: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

34第 5章 对话框

5.清理对话框对象的方式 与创建对象的方式 new操作相对应,使用 delete操作删除一个非模态对话框对象。 当屏幕上一个窗口被关闭后,框架会自动调用 CWnd::PostNcDestroy() 函数,也可以编写程序代码,在这个函数中清理非模态对话框对象。

Page 35: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

35第 5章 对话框

6. 必须有一个标志表明非模态对话框是否是打开的 因为在非模态对话框打开的情况下,用户有可能再次选择打开该对话框,这时不能再创建一个新的非模态对话框。 程序根据标志来判断是打开一个新的对话框还是激活一个已打开的对话框。通常可以用拥有者窗口中的指向对话框对象的指针作为这种标志,当对话框关闭时,给该指针赋 NULL 值,以表明对话框对象已不存在了。

Page 36: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

36第 5章 对话框

【例 5.5 】创建一个单文档的 MFC 应用程序,以非模态对话框的形式实现应用程序 MyDialog同样的功能。

Page 37: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

37第 5章 对话框

5.3.2 窗口对象的自动清除 (自学 )

Page 38: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

38第 5章 对话框

5.4 属性页对话框

属性页对话框实际上是一个包含了多个子对话框的对话框,这些子对话框通常被称为页 (Page) 。每次只有一个页是可见的,在对话框的顶端有一行标签,用户通过单击这些标签可以切换到不同的页。 为了支持属性页对话框, MFC 提供了 CPropertySheet类和 CPropertyPage 类。分别代表属性页对话框和对话框中的某一页。

Page 39: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

39第 5章 对话框

【例 5.6 】创建一个单文档的 MFC 应用程序 Li5_6 ,通过【对话框 | 属性页对话框】菜单项,打开如图所示的对话框。当按确定按钮后,将在消息框中输出相关信息。

Page 40: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

40第 5章 对话框

【例 5.6】使用 CpropertySheet 派生类对象来创建与例 5.5同样的属性页对话框。

Page 41: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

41第 5章 对话框

5.5 通用对话框

Page 42: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

42第 5章 对话框

5.5.1 CFileDialog 类 用 CFileDialog 类提供的通用文件对话框,实现Windows 标准的【打开】和【另存为】功能。

Page 43: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

43第 5章 对话框

使用 CFileDialog 可按以下步骤进行。(1)构造 CFileDialog 类的对象。该类的构造函数为:CFileDialog(

BOOL bOpenFileDialog,值为 TRUE,构造【打开】对话框;值为 FALSE,构造“另存为”对话框LPCTSTR lpszDefExt=NULL,默认的文件扩展名LPCTSTR lpszFileName=NULL, 出现在文件名编辑框中的初始文件名DWORD dwFlags=OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,

LPCTSTR lpszFilter=NULL,CWnd *pParentWnd=NULL 文件过滤器, 用于确定显示在文件列表中的文件类型)

Page 44: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

44第 5章 对话框

例如,以下字符串就是一个描述只在文件列表框中显示文本文件 (*.txt) 和 Microsoft 文件 (*.doc) 的过滤器。 CFileDialog dlg(TRUE,"bmp","*.bmp", OFN_HIDEREADONLY

|OFN_ALLOWMULTISELECT," 文本文件 (*.txt)|*.txt|Word 文件(*.doc)|*.doc||");

第 1 个参数 TRUE:【打开】对话框;第 2 个参数“ bmp” :如果在文件名对话框中输入文件名时未指定扩展名,则会自动附加“ .bmp”;第 3个参数“ *.bmp” :文件名对话框中的初始文件名是 *.bmp;第 4个参数代表 dwFlags :不显示隐藏文件,且可以在列表框中进行多选;第 5 个参数是过滤器:在文件类型下拉列表框中显示了文本文件 (*.txt) 和 Word 文件 (*.doc) 。

Page 45: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

45第 5章 对话框

(2) 调用成员函数 DoModal( ) ,将对话框显示在屏幕上,并让用户从中选择文件。(3) 如果 DoModal( )返回的是 IDOK,那么调用下表中的成员函数获取文件信息。

Page 46: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

46第 5章 对话框

【例 5.7 】创建一个单文档的 MFC 应用程序 Li5_7 ,利用文件存取对话框取得一个文件的路径名。

Page 47: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

47第 5章 对话框 5.5.2 CColorDialog 类

CColorDialog 类提供了可以选择颜色的对话框,使得用户可以从颜色列表中选择要用的颜色。对该类的使用可按下列步骤进行 :

(1) 在视图类相应位置构造 CColorDialog 对象。(2) 设置或修改成员变量m_cc 来初始化对话框。m_cc 的结构类型为 COLORREF。(3) 调用成员函数 DoModal() 来显示对话框并让用户从中选择颜色。

Page 48: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

48第 5章 对话框 (4) 如果 DoModal()返回的是 IDOK ,那么用户所做的颜色选择将保存在 m_cc 中。通过使用该类的成员函数 GetColor()即可得到选择颜色的 RGB值。

【例 5.8 】创建一个单文档的 MFC 应用程序 Li5_8 ,利用颜色选择对话框选择颜色,并在视图区画一个该颜色的矩形。

Page 49: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

49第 5章 对话框

5.5.3 CFontDialog 类 CFontDialog 类封装了标准的【字体】对话框,使得用户可以从系统安装的字体列表中选择要用的字体。 CFontDialog 类的使用步骤与 CColorDialog 的使用过程是一样的,只是 m_cc 的结构类型为 LOGFONT 。 在选择了字体后,可通过下表中的成员函数获取所选择的字体信息。

Page 50: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

50第 5章 对话框

Page 51: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

51第 5章 对话框

【例 5.9 】创建一个单文档的 MFC 应用程序 Li5_9 ,利用字体选择对话框选择字体的属性,并在视图区以该属性显示文本信息。

Page 52: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

52第 5章 对话框

5.5.4 CPrintDialog 类和 CPageSetupDialog 类

CPrintDialog 类支持打印和打印设置对话框,通过这两个对话框用户可以进行与打印有关的设置。

Page 53: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

53第 5章 对话框

5.5.5 CFindReplaceDialog类

CFindReplaceDialog 类用于实现查找和替换对话框。这两个对话框都是非模态对话框,用于在正文中查找和替换指定的字符串。

Page 54: 第  5  章   对话框 5.1  对话框概述  5.2  模式对话框          5.3  非模式对话框  5.4  属性页对话框  5.5  通用对话框  5.6  应用实例

Visual C++ 程序设计与应用教程2023.04.24

54第 5章 对话框

5.6 应用实例 制作一个简单的计算器,实现加、减、乘、除、求倒数和平方根的混合运算,并能进行清屏及倒退操作。