Visual C++面向对象编程教程 第6章 对话框和标准控件
6vc对话框与控件

前一页
休息
6 对话框与控件
信息技术学院
技术要点总结:
对话框控件和相关MFC类(P155,表6-2) 用于对话框控件的CWnd成员函数(P155,表6-3) 对话框编辑器
控件工具箱:”右击工具栏/control” “Tools/Customize…/ToolsBars/Control” 修改控件的Tab键次序:”编排(Layout)/Tab Order”;或 Ctrl+D按新的次序依此用鼠标单击各个控件,新的Tab键 次序即可生成. 控件布局工具栏:P159,图6-5,设置Layout/Guide Setings 测试对话框:Ctrl+T
为MyHello程序添加”口令”对话框
11
前一页
休息
6 对话框与控件
信息技术学院
预备知识
对话框是实现人机交互的重要手段,对话框不但 可以接收消息,而且可以被移动和关闭.
1.对话框类型
无模式对话框 模式对话框
允许用户在该对话框 与应用程序其他窗口 之间的切换
不允许用户在关闭对话 框之前切换到应用程序 的其他窗口
编辑对话框属性 向对话框内添加控件 ——添加/选取/控件的布局/测试对话框 使用ClassWizard,为对话框资源创建一个新类CMyDlg,为控件 进行消息映射
afx_msg void OnButton1(); //向导完成 ON_BN_CLICKED(IDC_BUTTON1, OnButton1) //向导完成
name:m_Password Category: Value Variable type:CString
Variable
创建: DDX_Text(pDX, IDC_PASSWORD_EDIT, m_password)
Visual C 6.0程序设计(章 (6)

第6章 非客户区界面设计 (4) 在Messages列表框中选择消息,然后单击“Add Function…”按钮,增加消息处理函数。一般都是用 ClassWizard提供的缺省函数名。 (5) 单击“确定”按钮,关闭ClassWizard对话框,添加消 息处理函数。
第6章 非客户区界面设计
图6-3 为菜单项添加消息
第6章 非客户区界面设计
表 6-3 系统自动分配的 ID 号
标题
ID 号
显示系统时间
ID_SHOWTIME
禁止
ID_PREVENT
激活
ID_ACTIVE
பைடு நூலகம்
第6章 非客户区界面设计 (9) 运行该程序,可见应用程序菜单如图6-10所示。 需要注意的是,这里所有子菜单选项均为灰色,即无效状态。 要想对应的子菜单处于有效状态,就要为相应的菜单项添加消息 处理函数,即具体的操作功能。
第6章 非客户区界面设计
图6-6 菜单属性对话框
第6章 非客户区界面设计
图6-7 添加子菜单后菜单显示
第6章 非客户区界面设计
图6-8 菜单属性对话框
第6章 非客户区界面设计
图6-9 菜单属性对话框
第6章 非客户区界面设计 (7) 在“分隔符”菜单项下添加“禁止”菜单项,快捷键为 “Alt+P”,提示为“禁止菜单功能”。 (8) 在“禁止”菜单项下增加“激活”菜单项,快捷键为 “Alt+A”,提示为“激活菜单功能”。 请注意,在菜单中用鼠标左键双击新添加的子菜单项,在弹 出的属性窗口中的ID号为系统自动分配的ID号,为了便于寻找可 将其修改为便于记忆的ID号。 系统自动分配的ID号如表6-3所示。
第6章 非客户区界面设计
第6章 非客户区界面设计
VC++6.0入门【第六章_创建和使用对话框】

第6章创建和使用对话框对话框是一种用户界面,几乎每一个Windows程序都使用对话框与用户进行交互。
对话框可能是一个简单的只含有OK按钮的消息框,也可以是一个复杂的数据输入表单。
对话框上有一些方便用户输入的控件,对话框依靠这些控件与用户进行交互,其实质是一个接收消息的窗口。
在本章节我们主要讲述模式对话框和无模式对话框的原理和使用方法,下一章将详细介绍各种控件的使用。
你将学习创建一个对话框,使用对话框模板编辑一个对话框资源,并在程序中调用对话框的方法。
6.1 对话框的基本原理6.1.1 对话框的工作原理在创建一个对话框之前,我们先来了解一下对话框是如何工作的,对话框的数据来自三方面:对话框资源、对话框对象、和一个文档对象:1.对话框资源对话框资源是一个用户输入或取得数据的图形界面。
这个图形界面是使用Develop Studio的对话框编辑器在对话框模板上创建的,程序员可以在对话框模板上增加并编辑控件,生成对话框资源。
当应用程序运行时,就可以得到一个对话框。
2.对话框对象MFC使用CDialog类来描述对话框,它是CWnd类的派生类。
在CWnd类的基础上增加了数据交换的功能。
当创建一个新的对话框资源后,使用ClassWizard可以创建一个对话框类的派生类。
对话框对象实现了对话框和应用程序之间的通信。
在应用程序中定义一个对话框对象后,在对话框显示前,可以通过访问对话框对象的成员变量为一个对话框的控件初始化,在对话框关闭后,可以通过访问对话框对象的成员变量获得用户的输入数据。
3.文档对象MFC使用文档对象描述应用程序处理的数据,用户输入的数据要进一步的处理,通常要先存贮到文档对象中。
例如:一个学生记录处理的应用程序,用户通过一个对话框输入学生记录并贮存到一个文件中。
应用程序的处理顺序是:用户在对话框中输入信息,通过对话框对象得到输入信息,将输入信息整理到文档对象中,使用序列化函数将文档对象存贮到一个文件中,所以文档对象扮演了一个很重要的数据交换的角色。
Visual C# 程序设计 讲稿 第06章

建立Windows应用程序
新建Windows应用程序项目
新建项目页 开发窗口 运行结果
查看程序代码 代码分析
Windows 窗体应用程序模型
Windows 窗体程序模型包括以下方面:
窗体 控件 事件 确定性的生存期和处置
窗体
在 Windows 窗体中,Form 类是在应用 程序中显示的任何窗口的表示形式 通过设置 Form 类的 MDIContainer 属 性,可以创建一种特殊类型的窗体 MDI 窗体。 Form 类为键盘处理(Tab 键顺序)和滚 动窗体的内容提供内置的支持。
属性
属性(Properties)对程序员是公开的, 可通过简单的“=” 就可访问属性
窗体的Color属性 窗体的Opacity属性 窗体FormBorderStyle 属性 窗体FormStartPosition 属性
控件
添加到窗体中的每个组件(如 Button、 TextBox 或 RadioButton)称为控件 在.Net类库中,基本上所有的控件都是 由System.Windows.Forms.Control 类继承而来 通常可以通过设置属性与控件进行交互, 以更改其外观和行为
窗体中菜单的设计
菜单是软件界面设计的一个重要组成方面。 它描述了一个软件的大致功能和风格 菜单设计基础知识
创建菜单控件 将为菜单添加选项 选择快捷键 为各个菜单项添加相应的事件处理代码
窗体中菜单的设计
用程序完成菜单设计
实际上,在设计过程中设计完成的菜单在实际 应用过程中有时需要根据程序的变化进行调整, 例如新增一个菜单项或者删除一个菜单项,尤 其对于上下文菜单更是如此,因此,就需要用 到通过程序来控制和完成菜单设计。
Visual Basic程序设计教程第6章

主要方法:
Cls Print
4
6.2.2 图形文件的装入
1.图片框与图像框的区别 2.在设计阶段装入图形文件
用属性窗口中的Picture属性装入 利用剪贴板把图形粘贴到窗体、图片框或图像框中
9
6.5.2 组合框
1.组合框属性:
列表框的属性基本上都可用于组合框 Style Text
2.组合框事件 3.组合框方法
与列表框相同
10
6.6 滚动条
主要属性:
Max Min LargeChange Value
SmallChange
主要事件:
Scroll Change
6.9.1 设置焦点
在运行时单击对象 运行时用快捷键选择对象 在程序代码中使用SetFocus方法
6.9.2
Tab顺序
用Tab键也可以把焦点移到某个控件中。每按一次Tab 键,可以使焦点从一个控件移到另一个控件。Tab顺序 就是焦点在各个控件之间移动的顺序。
14
6.框和组合框
6.5.1
列表框
Columns List Listcount ListIndex Multiselect Selected Style Text
主要属性:
主要方法:
AddItem Clear RemoveItem
11
6.7 计时器
主要属性:
Interval Enabled
主要事件:
Timer
12
6.8 框架
框架用来对控件进行分组,即把指定的控件放到框
《Visual Basic程序设计》第6章 常用控件的使用

这三个属性是文本框中对文本的编辑属性。
SelStart:确定在文本框选中文本的起始位置。第一字
符 的位置为0。若没有选择文本,则用于返回或设置文本的
插 入 点 位 置 , 如 果 SelStart 的 值 大 于 文 本 的 长 度 , 则
第 六
SelStart取当前文本的长度:
章
SelLength:设置或返回文本框中选定的文本字符串长
检查框的Value 属性与单选按钮不同,其值为数值型 数据,可取0,1,2
第
六 章
检查框与单选按钮Value 属性的比较
单选钮
检查框
True: 单选钮被选定 False: 单选钮未被选定
0--Unchecked:未被选定 1--Checked:选定 2--Grayed:灰色,禁止选择
21
(2)事件
用双击工具箱上工具的自动方式。
方法2:将控件“剪切”(Ctrl+X)到剪贴板,然后选
中框架,使用 (Ctrl+V)命令粘贴到框架内。
24
(1)重要属性
Caption属性:框架标题
Enabled属性:缺省为True
False:标题呈灰色,不允许对框架内的所有对象进行 操作。
Visible属性:
Click事件是检查框控件最基本的事件。用户一般无
需为检查框编写Click事件过程,但其对Value属性值的
改变遵循以下规则:
第 六
单击未选中的检查框时,Value属性值变为1;
章 单击已选中的检查框时,Value属性值变为0;
单击变灰的检查框时,Value属性值变为0。
22
6.7 框架 (Frame)
均可 。
ToolTipText :设置工具提示,和Picture结合使用。
第6章 对话框与标准控件

CWnd::GetDlgItem() 获取控件或子窗口的指针 CWnd::GetDlgItemText() 获取对话框中控件的文本内容 CWnd::SetDlgItemText() 设置对话框中控件的文本内容
CWnd::ShowWindow() 显示或隐藏对话框窗口 CWnd::EnableWindow() 使窗口处于禁用或可用状态
Control IDs栏:列出对话框资源上已有的控件, 第1列Control IDs表示控件的ID,第2列Type表示 变量的类型,第3列Member表示成员变量名。
如果在Category下拉框选择Value项,表示要 为该控件的某项属性定义一个变量,这意味 着程序关心的是控件中的值,而不是控件对 象本身。 这时,还可以通过Variable type下拉框为变 量选择不同的类型,可以选择一般的C++数 据类型或Visual C++自定义的数据类型。 例如,对于编辑框控件,此时成员变量的类 型可以是int、float、long、BOOL等C++一般 数据类型或者是UINT、CString等Visual C++ 自定义数据类型。
应用程序类
框架类 成员变量
InitInstance()
成员函数
文档类 成员变量
视图类 成员变量 菜单响应函数 OnDraw()
对话框类 成员变量
成员函数
Serialize()
void CMysdiView::OnEditInputradius() { CRadiusDialog dlg; // 定义一个对话框对象 if (dlg.DoModal()==IDOK) // 显示对话框 { m_nCViewRadius=dlg.m_nRadius; // 接收并存储编辑框数据 Invalidate(); // 刷新视图 } }
对话框和控件

对话框的使用—添加对话框资源
❖ 在一个MFC应用程序中添加对话框资源,通常按下列步骤进行: ❖ (1)选择“插入”->“资源”,或按快捷键Ctrl+R打开“插入资源”对话框,
在对话框中可以看到资源列表中存在Dialog项,展开该项可以看到对话框资源 的不同类型选项。
对话框的使用—添加对话框资源
类型
对话框的使用——添加和布局控件
❖ 控件的布局
注意: (1)大多数布置控件的命令使用前,都需要用户选取多个控件,且 “主要控件”起到了关键作用。举例说明。 (2)为了便于用户在对话框内精确定位各个控件,系统还提供了网格、 标尺等辅助工具。
对话框的使用——创建对话框类
❖ 在对话框资源模板的空白区域内双击鼠标,将弹出“Adding a Class”对话框,询问是否为对话框资源创建一个新类。举 例说明。
对话框和常用控件
❖ 对话框的使用 ❖ 控件的创建和使用方法 ❖ 常用控件 ❖ 通用对话框和消息对话框
对话框的使用
在VisualC++6.0应用程序中,使用一个对话 框的一般过程是: 添加对话框资源 设置对话框的属性 添加和布局控件 创建对话框类 添加对话框代码 在程序中调用对话框
对话框的使用
❖ 资源与资源标识 Visual C++6.0将Windows应用程序中经常用 到的菜单、工具栏、对话框、图标等都视为 “资源”,并将其单独存放在一个资源文件 中。每个资源都由相应的标识符来区分,并 且可以像变量一样进行赋值。
nIDCheckButton); ❖ int GetCheckedRadioButton(int nIDFirstButton,int nIDLastButton); ❖ 其中,nIDFirstButton和nIDLastButton分别指定这组单选按钮的第一个
C_教程_第6章_窗体、控件和组件

窗体的创建、显示与隐藏( 6.1.2 窗体的创建、显示与隐藏(续)
3、如何隐藏一个打开的窗体 使用Form2 );创建的窗体 (1)fm.Hide( ); // 使用Form2 fm = new Form2( );创建的窗体 隐藏当前窗体: (2)隐藏当前窗体:this.Hide( ); 隐藏其它窗体: (3)隐藏其它窗体:Application.OpenForms["Form1"].Hide( ); 只能隐藏“无模式”窗体。 注:只能隐藏“无模式”窗体。 4、如何重新显示隐藏的窗体 使用Form2 );创建的窗体 (1)fm.Show( ); // 使用Form2 fm = new Form2( );创建的窗体 显示当前窗体: (2)显示当前窗体:this.Show( ); 显示其它窗体: (3)显示其它窗体:Application.OpenForms["Form1"].Show( ); 5、退出应用程序 Application.Exit( ); 执行该语句后,停止本应用程序的消息循环, 执行该语句后,停止本应用程序的消息循环,关闭本应用程序所有 打开的窗体。 打开的窗体。
窗体的创建、显示与隐藏( 6.1.2 窗体的创建、显示与隐藏(续)
6、关闭一个窗体后再显示另一个窗体 static void Main( ) { …. . //创建欢迎窗体 //创建欢迎窗体 WelcomeForm fm = new WelcomeForm( ); //以 模式” //以“模式”窗体显示 fm.ShowDialog( ); //运行主窗体 运行主窗体MainForm //运行主窗体MainForm Application.Run(new MainForm( )); }
61窗体与对话框62控件共有的基本操作63容器类控件和组件64文本操作类控件65选择操作类控件66图像操作类控件和组件67菜单工具栏与状态栏68视图操作类控件69其他常用控件1窗体应用程序的启动和停止使用application类提供的静态方法来启动停止应用程序
vc6s-chap06-对话框与控件j

在Caption中输入“模式对话框!”,ID号不变
(4) 创建对话框类 在对话框编辑器中,双击 “IDD_MODELDLG”对话框, 因为该对话框资源是新建的资源 ,所以显示 “Adding a Class”对 话框。
单击“OK”按钮,显示 “New Class”对话框,在类 名name编辑框中输入 CModelDlg,单击OK按钮, 即创建了“CModelDlg”类。
} void CEx06_1View::OnMsgInfodlg() {
AfxMessageBox("信息", MB_OKCANCEL|MB_ICONINFORMATION);
} void CEx06_1View::OnMsgQuedlg() {
AfxMessageBox("问题", MB_ABORTRETRYIGNORE|MB_ICONQUESTION);
}
void CEx06_1View::OnMsgStopdlg() { AfxMessageBox("错误!", MB_OK|MB_ICONSTOP); } void CEx06_1View::OnMsgDefDlg() { AfxMessageBox(“缺省”); } 编译、 (5) 编译、调试和运行
6.1.3 编写对话框程序的流程
一般流程如下: 一般流程如下: (1) 创建对话框资源,并添加各种所需的控件 创建对话框资源, (2) 创建与对话框资源相关联的 创建与对话框资源相关联的CDialog的派生类 的派生类 (3) 创建与控件相关的数据成员变量 (4) 创建对话框中相关控件的消息处理函数 (5) 创建程序中的对话框类的对象 (6) 调用相关函数显示对话框
OnShowdlgModeldlg() OnShowdlgModelessdlg ()
[工学]Visual C++面向对象编程教程第6章 对话框和标准控件复习进程
![[工学]Visual C++面向对象编程教程第6章 对话框和标准控件复习进程](https://img.taocdn.com/s3/m/4264dbb9c67da26925c52cc58bd63186bceb92fb.png)
闭对话框。
CDialog::OnCancel() 单击Cancel按钮或按Esc键时调用该函数,不接收对话框
输入数据,关闭对话框。
CDialog::OnInitDialog() WM_INITDIALOG 消 息 处 理 函 数 , 在 调 用 DoModal 或
注意:
表面上看程序并没有调用UpdateData(),但是, 当程序调用CDialog::DoModal()创建并显示对话框时, 将自动调用CDialog::OnInitDialog()完成初始化的工作。 在 OnInitDialog() 中 调 用 了 UpdateData(FALSE), 将 数 据从成员变量传递到关联的控件,从而显示在控件中。 而 单 击 OK 按 钮 将 调 用 CDialog::OnOk() 函 数 , 在 OnOK()中调用了UpdateData(TRUE),将数据从控件 传递到关联的成员变量。
CWnd::DoDataExchange() 被UpdateData()调用以实现对话框数据交换,不能直接调
用。
CWnd::GetWindowText() 获取对话框窗口的标题
CWnd::SetWindowText() 修改对话框窗口的标题
CWnd::GetDlgItemText() 获取对话框中控件的文本内容
6.1 对话框概述
就用户交互输入功能而言,菜单和工具栏的功 能是极其有限的。而对话框除了用来显示提示 信息(如程序启动时显示版权和运行进度信息), 一个主要功能是用于接收用户的输入数据。
在MFC中,对话框的功能被封装在CDialog类中, 而CDialog类是CWnd类的派生类。作为窗口, 对话框和其它窗口一样具有窗口的一切功能。
VisualC程序设计与应用教程

Visual C++程序设计与应用教程
第6章
Windows常用控件
6
使 用 Layout 菜 单 。 当 打 开 对 话 框 编 辑 器 时 , Develop Studio的菜单栏上会增加一个菜单Layout。
2018/10/25
Visual C++程序设计与应用教程
第6章
Visual C++程序设计与应用教程
第6章
6.1 6.2 6.3 6.4 6.5
Windows常用控件
6.6 CComboBox类控件 6.7 CSpinButtonCtrl类控件 6.8 CSliderCtrl类控件 6.9 CProgressCtrl类控件 6.10 应用实例
控件概述 CStatic类控件 CEdit类控件 CButton类控件 CListBox类控件
2018/10/25
Visual C++程序设计与应用教程
第6章
Windows常用控件
17
2. Center vertically 静态文本控件中文本在垂直方向上居中。它的类型 是布尔型,默认值是FALSE。 3. No prefix 禁止文本中的“&”解释为它后面的字符有一个下划 线,而直接将它作为文本的一部分进行显示。Noprefix选 项经常在显示包含“&”的文件名或字符串中用到。
2018/10/25
Visual C++程序设计与应用教程
第6章
Windows常用控件
8
6.1.3 控件的共有属性 Windows 标准控件的属性窗口通常由 General 、 Styles和Extended Styles 3个属性标签构成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CDialog::OnInitDialog() WM_INITDIALOG 消 息 处 理 函 数 , 在 调 用 DoModal 或 Create函数时系统发送WM_INITDIALOG消息,在显示对话框 前调用该函数进行初始化。 CDialog::EndDialog() 用于关闭模态对话框窗口。 CWnd::ShowWindow() 显示或隐藏对话框窗口 CWnd::DestroyWindow() 关闭并销毁非模态对话框 CWnd::UpdateData() 通过调用DoDataExchange()设置或获取对话框控件的数据 CWnd::DoDataExchange() 被UpdateData()调用以实现对话框数据交换,不能直接调 用。
例如,在软件安装过程中为了弹出如下图所示 的警告提示信息对话框并进行相应的处理:
编写的代码如下:
int nChoice=MessageBox("文件复制失败!", "错误", MB_ICONWARNING | MB_ABORTRETRYIGNORE );
switch(nChoice)
{ case case IDABORT: // 用户按下"终止"按钮 . . . . . . IDRETRY: // 用户按下"重试"按钮 . . . . . . IDIGNORE: // 用户按下"忽略"按钮 . . . . . .
例如,当添加一个UINT型的成员变量m_nInput 时指定它的最小值和最大值分别为0和100,则 ClassWizard类向导将在成员函数DoDataExchange() 中添加以下DDV函数的调用语句:
DDV_MinMaxUInt(pDX, m_nInput, 0, 100);
程序运行后,如果用户的输入数据超出0~100 的范围,DDV将显示一个提示信息对话框(例72c),提示用户有效的输入范围。
对话框的一个典型应用是通过菜单命令或工具
栏按钮打开一个对话框,当然,对话框也可以 作为一个程序的主界面。
6.1.1 基于对话框的应用程序
可以直接利用MFC
AppWizard向导创建一个基于对 话框的应用程序,这种程序运行后首先出现一个对 话框。在向导的第一步选择Dialog Based项。此时, 应用程序向导将出现与单文档和多文档程序向导不 同的操作步骤,因为对话框应用程序一般不包含文 档,故不支持数据库和复合文档。
UpdateData()的用法: 当调用UpdateData(TRUE)时,MFC通过调用 DDX函数将数据从控件传递到关联的成员变量; 当 调 用 UpdateData(FALSE) 时 , MFC 通 过 调 用 DDX函数将数据从成员变量传递到关联的的控件。 利用UpdateData()函数实现了在刷新后重新获取成 员变量。
有关对话框的常用处理函数
CDialog::CDialog() 通过调用派生类构造函数,根据对话框资源模板定义一 个对话框。 CDialog::DoModal() 激活模态对话框,显示对话框窗口。 CDialog::Create() 根据对话框资源模板创建非模态对话框窗口。如果对话 框不是Visible属性,还需通过调用CWnd::ShowWindow()函 数显示非模态对话框窗口。 CDialog::OnOk() 单击OK按钮时调用该函数,接收对话框输入数据,关 闭对话框。 CDialog::OnCancel() 单击Cancel按钮或按Esc键时调用该函数,不接收对话框 输入数据,关闭对话框。
6.1.3 对话框数据交换DDX和验证DDV
在对话框中实现用户数据输入和输出的一般 方法是通过ClassWizard类向导将对话框控 件与成员变量相关联,利用对话框数据交换 DDX(Dialog Data Exchange)和验证DDV (Dialog Data Validation)机制实现数据的 输入和输出。 当利用ClassWizard类向导添加成员变量时, 用户如果在窗口的左下角输入数据的范围, ClassWizard将自动加入函数DDV的调用代码。
CWnd::GetWindowText() 获取对话框窗口的标题 CWnd::SetWindowText() 修改对话框窗口的标题 CWnd::GetDlgItemText() 获取对话框中控件的文本内容 CWnd::SetDlgItemText() 设置对话框中控件的文本内容 CWnd::GetDlgItem() 获取控件或子窗口的指针 CWnd::MoveWindow() 用于移动对话框窗口 CWnd::EnableWindow() 使窗口处于禁用或可用状态
函数OnOK()、 OnCancel()与DoModal()的关系:
对话框中一般都有OK和Cancel按钮,单击OK 按钮时调用CDialog::OnOK()函数,单击Cancel按钮 时 调 用 CDialog::OnCancel() 函 数 。 OnOK() 函 数 和 OnCancal()函数都将结束DoModal()函数调用,但 令 DoModal() 返 回 不 同 的 值 。 OnOK() 函 数 令 DoModal()返回IDOK,OnCancel()函数令DoModal() 返回IDCANCAL。用户可以根据DoModal()的返回 值做出不同的选择。如: if (myDlg.DoModal() = = IDOK )
对话框类为程序员提供了管理对话框的编程接 口。 CDialog类从CWnd类派生而来,所以它继承 了CWnd类的成员函数,具有CWnd类的基本功能, 可以编写代码移动、显示或隐藏对话框,并能根据 对话框的特点增加新的成员函数,扩展它的功能。 在你的CDialog类的派生类中可以直接调用CDialog 类的成员函数。大部分的成员函数是虚函数,可以 在你的派生类中重载,以实现特定的目的。除了 CDialog类成员函数,类CWnd和CWinApp也提供了 一些成员函数用于对话框的管理。
2.去掉对话框中标题为“TODO: 在这里设置对话 控制”的静态文本控件,调整对话框大小,在成 员函数CMyDialogDlg::OnPaint()中添加代码。
void CMyDialogDlg::OnPaint() { . . . . . . else { CPaintDC dc(this); dc.SetBkMode(TRANSPARENT); dc.TextOut(20, 50, "这是一个对话框应用程序!"); CDialog::OnPaint(); }
case
}
6.2 使用对话框
为了在屏幕上显示对话框: (1)首先需要建立对话框资源及其与资源相 关的对话框类; (2)然后添加控件、与控件关联的成员变量 和消息处理函数; (3)最后在程序中显示对话框并访问与控件 关联的成员变量。 在Visual C++中可以利用集成工具如对话框 编辑器和ClassWizard类向导很方便地创建对话框, 不需要程序员手工编写太多的源代码。
按照对话框应用程序向导提示的步骤进行操作就得
到一个对话框应用程序项目,出现对话框编辑器和 控件工具栏浮动窗口,它们采用的是一种所见即所 得的可视化工作方式。利用向导创建应用程序的框 架后,程序员可根据程序具体功能要求添加代码。
例 编写一个对话框应用程序MyDialog,程序运行 后显示一个对话框,并在对话框上显示文本串。
6.2.1 一般对话框工作流程
当定义了一个对话框类后,就可以利用这个对话 框类声明一个对话框对象,即一个能够在屏幕上 显示的对话框。 声明了一个对话框对象后,可以调用对话框类的 成员函数DoModal()建立对话框窗口并显示对话 框。例如,假设定义了一个名为CMyDialog的对 话框类,为了在屏幕上显示一个对话框,可以编 写如下代码: CMyDialog myDlg; myDlg.DoModal();
注意: 表面上看程序并没有调用UpdateData(),但是, 当程序调用CDialog::DoModal()创建并显示对话框时, 将自动调用CDialog::OnInitDialog()完成初始化的工作。 在OnInitDialog()中调用了UpdateData(FALSE),将数 据从成员变量传递到关联的控件,从而显示在控件中。 而 单 击 OK 按 钮 将 调 用 CDialog::OnOk() 函 数 , 在 OnOK()中调用了UpdateData(TRUE),将数据从控件 传递到关联的成员变量。 由此看来,不管MFC将DDX技术如何复杂化, 我们只需知道,DDX就如同一条双向通道,而方向 控制开关就是UpdateData()函数中的BOOL类型参数 是TRUE还是FALSE。
版权所有 复制必究
对话框是Windows应用程序中一种常用的 资源,其主要功能是输出信息和接收用户的输 入数据。控件是嵌入在对话框中或其它父窗口 中的一个特殊的小窗口,它用于完成不同的输 入、输出功能。
对话框与控件关系密切,在每个对话框上 一般都有一些控件,对话框依靠这些控件与用 户进行信息的交互。本章主要介绍对话框的工 作原理和编程方法,并通过实例学习一些标准 控件和公共控件的使用方法。
{ …… }
对话框的初始化可以在三个不同的阶段所调用 的函数中进行: (1)对话框类构造函数; (2)WM_CREATE消息处理函数; (3)WM_INITDIALOG消息处理函数。
通常是在消息WM_INITDIALOG的消息处理函 数OnInitDialog()中进行初始化。在收到WM_INITDIALOG消息时,对话框的框架已创建,对话框中的 每个控件也已建立起来,但它们还没有在屏幕上显 示。此时自然可以设置或优化对话框中各个控件的 外观、尺寸、位置以及其它属性。函数OnInitDialog() 将被成员函数DoModal()调用。
LPCTSTR lpCaption, UINT
int CWnd::MessageBox(LPCTSTR