第五章 对话框和标准控件
在它仍然保留在屏幕的同时,用户还可以在 同一应用程序的其他窗口中进行工作,例如查 找对话框。
北京林业大学信息学院
创建对话框---创建对话框模板
可以使用对话框编辑器来创建包含不同控件的对话 框模板,在对话框编辑器中,可以调整对话框显示时 的大小和位置,从Controls工具栏拖放各种类型的控 件到对话框中,用Dialog工具栏调整控件的位置,测 试对话框的外观和行为。
北京林业大学信息学院
实现步骤
(3) 对视图类进行编辑,以能激活对话框,并进 行绘图。
首先要使用ResourceView中的菜单编辑器来创建菜 单项“颜色设置”。
在创建了菜单项后,可通过ClassWizard为该菜单项 映射菜单消息。
在视图中需要生成一个该类的对象。记得包含头文件 在为菜单项颜色设置映射的消息中,写如下代码
控件
静态控件 静态控件 静态控件 编辑框 编辑框 编辑框
ID
Caption
IDC_STATIC1 R(0-255)
IDC_STATIC2 G(0-255)
IDC_STATIC3 B(0-255)
IDC_R
IDC_G
IDC_B
北京林业大学信息学院
实现步骤
(2) 使用ClassWizard创建对话框类CMyColorDialog 在ClassWisard中选取属性表Member Variables,为控
对话框模板定义了对话框的特性(比如大小、 位置和风格)以及对话框中每个控件的类型和 位置。 2、对话框类
从CDialog类派生的对话框类提供编程接口 来管理对话框 。
北京林业大学信息学院
对话框的分类
1、模式(Modal)对话框 在对话框关闭之前,用户无法在同一应用程
序的其他地方进行工作,例如打开文件对话框。 2、无模式(Modaless)对话框
件IDC_R、IDC_G和IDC_B分别映射int类型成员变量 m_nR、m_nG和m_nB。
在ClassWisard中选取属性表Message Maps,为 CMyColorDialog的消息WM_INITDIALOG映射函数 OnInitDialog(),并单击Edit Code按钮为OnInitDialog 函数编写初始化代码。
的控件。 (3) 指定控件和成员变量之间如何交换数据。 (4) 映射Windows消息到对话框类,如鼠标左键单击消息。 (5) 利用ClassWizard为对话框中的按钮和其他可以产生事件的
控件加入相应的消息控件函数。 (6) 为各种事件处理函数编辑代码,来够完成指定的工作。
北京林业大学信息学院
创建对话框--创建对话框类
对话框上的许多控件还需要进行初始化工作, 从而使得对话框被显示时这些控件具有相应类 型的初值。对话框的初始化工作可以使用以下 3种方法来进行。
(1) 在构造函数中初始化 (2) WM_CREATE初始化 (3) WM_INITDIALOG初始化 对于对话框的初始化工作通常都在响应该消 息时进行 。
北京林业大学信息学院
dlg.DoModal(); Invalidate();
北京林业大学信息学院
实现步骤
编辑视图类中的OnDraw,进行绘图
void CMyView::OnDraw(CDC* pDC) {
CMyDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CRect rect; GetClientRect(rect); Cbrush brush; brush.CreateSolidBrush(RGB(dlg.m_nR,dlg.m_nG,dlg.m_nB)); pDC->SelectObject(&brush); pDC->Rectangle(100,100,200,300); }
北京林业大学信息学院
模式对话框编程
【例】 简单模式对话框的编程。 本程序的功能是在客户区显示一个可
由用户指定填充颜色的矩形。当菜单项 【颜色设置】被选中时将调出【颜色】 对话框,在其中用户可以确定RGB三颜 色的值,单击【确定】按钮后即可改变 矩形的填充色。
北京林业大学信息学院
实现步骤
程序的步骤如下。 (1) 使用对话框编辑器创建对话框模板,最终完成的对话 框界面如图所示。
模式对话框编程
对于模式对话框的编程可以按以下步骤进行。 (1) 根据要求创建对话框模板。 (2) 使用ClassWizard创建对话框类并进行各类
事件函数的代码编写。 (3) 对视图类进行编辑,以便对话框能够被激活。
在所编写的代码中,首先创建对话框类的对象, 然后通过该对象调用对话框类成员函数 DoModal()。 只 有 当 用 户 退 出 对 话 框 窗 口 时 , DoModal函数才能返回。
对话框和Windows标准控件
对话框的组成与分类 创建对话框 模式对话框的编程 通用对话框 Windows 标准控件 资源与资源编辑器 菜单的使用 工具栏的使用 状态栏的使用
北京林业大学信息学院
对话框的组成
对话框:是Windows应用程序与用户打交 道的界面元素 。 1、对话框模板
可以使用菜单方式:InsertResource打开Insert Resource对话框,选中Dialog后单击New按钮即可 打开对话框编辑器。或者使用项目的ResourceView, 找到Dialog资源,右击后选择Insert Dialog也可打 开对话框编辑器。
北京林业大学业大学信息学院
实现步骤
BOOL CMyColorDialog::OnInitDialog() {
CDialog::OnInitDialog(); m_nR=0; m_nG=0; m_nR=0; UpdateData(FALSE); //将设定的变量值传送给对应的控件 return TRUE; }
(a) 对话框模板 (c) Dialog工具栏
(b) Controls工具栏
北京林业大学信息学院
创建对话框---创建对话框类
在创建了对话框模板后,就可以利用ClassWisard来 创建从CDialog派生且连接到对话框模板的对话框类。
(1) 创建了一个连接到对话框模板CDialog类的派生类。 (2) 利用ClassWizard向对话框类加入数据成员来表示对话框中