将一个窗口句柄嫁接到一个CWnd类型变量中。使用MFC应用程序向导,创建一个工程名为“vs”的对话框程序,演示通过函数建立关联变量。4)修改对话框初始化函数,通过调用函数建立控件窗口和变量的关联。6)为增、删、改3个按钮建立消息映射函数并修改代码。实际上类向导建立的关联变量,内部也是调用子类化函数实现的,但是使用向导建立关联变量更加方便一些。因此,在后续章节中,主要使用类向导建立关联变量。......
2023-11-25
所有Windows基础控件都可以建立控件型关联变量,有一些控件不但可以建立控件型关联变量,而且可以建立数值型关联变量。
在第3节中,当通过类向导建立组合控件的关联变量(m_combo)时,在Category下拉列表框中包含“Value”和“Control”两项。选择“Control”表示建立控件型关联变量,选择“Value”表示建立数值型关联变量。大部分基础控件不支持数值型关联变量,只支持控件型关联变量,比如,按钮、列表控件、树形控件等;只有少部分控件才支持建立数值型关联变量,这些控件包括编辑框、下拉列表框、单选按钮、多选按钮和列表框等。
使用MFC应用程序向导,创建一个工程名为“cal”的对话框程序,用于演示数值型关联变量。
1)修改对话框标题为“计算器”并添加一些控件,如图6-12所示。
图6-12 编辑主对话框资源
2)修改主对话框的控件属性,见表6-4。
表6-4 主对话框的控件属性
3)在下拉列表控件IDC_OPER的Data属性中输入默认数据(换行键是<Ctrl+Enter>),如图6-13所示。
图6-13 编辑下拉列表控件的属性
4)执行View→ClassWizard命令,或者按快捷键<Ctrl+W>打开类向导,如图6-14所示。
在“Member Variables”分页中,选中IDC_LEFT控件ID再单击“Add Variables”按钮,或者直接双击IDC_LEFT弹出添加关联变量的对话框。
图6-14 添加数值型关联变量
5)在类向导中为一个编辑控件建立数值型关联变量,如图6-15所示。
在Category下拉列表框中,选择“Value”代表建立数值型关联变量。在Variable type下拉列表框中选择int类型,在变量名称中输入“m_nLeft”。最后单击“OK”按钮关闭对话框,完成编辑框IDC_LEFT关联变量的创建。
6)用同样的方法为三个编辑框和一个下拉列表控件,全部建立int类型的关联变量,如图6-16所示。
(www.chuimin.cn)
图6-15 建立数值型关联变量
图6-16 添加多个数值型关联变量
7)双击“计算”按钮,建立消息映射函数并修改代码。
8)编译并运行,测试代码,如图6-17所示。
图6-17 查看运行结果
本示例演示了通过类向导对编辑框和下拉列表控件建立数值型关联变量,并且结合调用UpdateData函数对数值型关联变量输入/输出。通过阅读MSDN说明可以了解到,UpdateData函数类似于C语言的scanf和printf函数,管理控件与关联变量之间的数据更新。UpdateData(TRUE)把界面输入的数值更新到关联变量中,UpdateData(FALSE)把关联变量存储的数据输出到界面上。
UpdateData对控件数据的输入/输出是整体性的,该函数一旦执行,窗口中所有数值型关联变量将同时被更新。如果要对单个控件的数据输入/输出,则只有使用控件型关联变量或者使用GetDlgItem系列函数(包括SetDlgItemText等)。
MSDN的UpdateData函数备注中介绍到:在对话框类中的基类中有两处自动调用UpdateData函数的地方。一是在对话框初始化(CDialog::OnInitDialog)时,内部调用UpdateData(FALSE)将数据更新到界面上。二是在对话框以确定方式关闭(CDialog::OnOK)时,内部调用UpdateData(TRUE)将数据从界面更新到关联的内存变量中。
9)在对话框类的构造函数中修改代码,将所有关联变量的初值随意修改一下。
10)编译并运行,测试代码,如图6-18所示。
这些数据是什么时候更新到界面上的呢?就是在对话框初始化时,是CDialog::OnInitDialog()内部调用UpdateData(FALSE)的结果。
图6-18 查看运行结果
有关VC++就业培训宝典之MFC视频教程的文章
将一个窗口句柄嫁接到一个CWnd类型变量中。使用MFC应用程序向导,创建一个工程名为“vs”的对话框程序,演示通过函数建立关联变量。4)修改对话框初始化函数,通过调用函数建立控件窗口和变量的关联。6)为增、删、改3个按钮建立消息映射函数并修改代码。实际上类向导建立的关联变量,内部也是调用子类化函数实现的,但是使用向导建立关联变量更加方便一些。因此,在后续章节中,主要使用类向导建立关联变量。......
2023-11-25
通过MFC应用程序向导,创建一个工程名为“vc”的对话框程序用于演示控件型关联变量。图6-4 通过菜单命令打开类向导4)在Member Variables分页中,选中IDC_LIST列表项再单击“Add Variables”按钮,或者直接双击IDC_LIST弹出添加关联变量的对话框,如图6-5所示。图6-6 类向导创建关联变量生成的代码DoDataExchange函数就是专门处理成员变量与控件关联的函数,可以认为是成员变量与控件之间的桥梁。6)按照以上方法,通过类向导为组合控件IDC_DEPT也建立一个控件型关联变量,如图6-7所示。......
2023-11-25
创建一个工程名为“vd”的对话框程序,演示常用控件的数值型关联变量。图6-20 添加数值型和控件型关联变量4)类向导在主对话框的头文件中自动添加的代码如下。几乎所有数值型关联变量能实现的功能,都能够由控件型关联变量或者GetDlgItem系列函数替代实现。对于单选按钮和复选框,使用数值型关联变量会更方便些。⑤通过类向导建立关联变量时,只要对“组长”ID建立一个数值型关联变量即可。......
2023-11-25
CBrush类的主要成员见表7-4。表7-4 CBrush类的主要成员1)用于填充的阴影线风格主要包括以下几种。创建一个工程名为“Brush”的对话框程序,用于演示选用不同画刷进行绘画的效果。2)在资源视图中,单击鼠标右键,在弹出的快捷菜单中,选择“Import”命令导入位图,如图7-16所示。图7-19 查看运行结果CBrush类构造函数与CreateSolidBrush和CreateHatchBrush等函数的功能基本一样,都可以用于创建一个画刷。一般当使用新画刷绘画结束后,最好恢复选择回旧画刷。......
2023-11-25
在本章第5节中,通过“Win32 Application”建立的MFC32工程,目的是为了演示MFC工程的架构原理。一个MFC工程必须包含一个CWinApp的派生类,并定义一个派生类的全局变量theApp,最后重写InitInstance虚函数用于处理进程启动过程。本节直接通过“MFC AppWizard”来创建MFC工程,用于对照以上说明的MFC必备因素。图3-54 程序向导生成的代码图3-55 MFC类向导在Class name下拉列表中选择CTestMFCDlg类,在Member functions列表框中显示4个已添加的回调函数。......
2023-11-25
打开本章第7节建立的“Tp”工程,继续演示CWinApp类的开发应用。1)修改启动函数CWinApp派生类的构造函数代码。m_pszAppName成员变量有三种途径赋值,首先在CWinApp构造函数中获得字符串。在App派生类以外,调用CWinApp类成员函数的方法有两种。CWinApp类的成员函数LoadIcon和LoadStandardIcon,实际上是封装了API函数LoadIcon的结果。和加载图标的两个函数一样,CWinApp类的成员函数LoadCursor和LoadStandardCursor,分别用于加载程序光标和系统光标资源,它们封装的也是同一个API函数LoadCursor。......
2023-11-25
创建一个工程名为“Mdc”的对话框程序,演示CMemDC类的封装及调用过程。2)选中“C/C++Header File”项,输入“MemDC”后单击“OK”按钮,如图8-2所示。图8-3 编辑主对话框资源5)在主对话框类的头文件中,修改代码,增加两个CMemDC类对象。图8-4 添加WM_SIZE消息映射函数7)修改消息映射函数代码,当窗口大小变化时在内存DC中缩放背景图。图8-5 查看运行结果本示例重点演示了CMemDC类的封装过程,以及加载文件位图和创建内存DC的方法。......
2023-11-25
表11-2 主对话框的控件属性(续)3)在主对话框的头文件中,添加一个CToolTipCtrl类型成员变量。4)修改主对话框的初始化函数,调用CToolTipCtrl::Create函数创建提示窗口。5)在ClassView中添加一个虚函数PreTranslateMessage。7)在类向导中,为列表控件和组合控件添加关联变量,如图11-25所示。9)在主对话框类中,添加两个普通成员函数。图11-26 查看运行结果14)如果要让提示文字多行显示,则只要再添加一行代码。......
2023-11-25
相关推荐