MFC数值型关联变量和控件型关联变量

您所在的位置:网站首页 mfc文本框显示变量 MFC数值型关联变量和控件型关联变量

MFC数值型关联变量和控件型关联变量

2024-07-12 21:39:12| 来源: 网络整理| 查看: 265

在MFC中常常要处理控件与控件实际关联变量(数据成员变量)之间的数据关系,MFC为我们提供了一种方式,通过将控件与其实际成员变量进行关联,通过DDX实现两者之间的数据交换。

不采用关联变量来对控件进行设值的时候,使用如下方式来设置:

1使用GetDlgItem(IDC_EDIT1)->GetWindowTextW(变量名)     来获取控件内容

2.逻辑处理(比如相加)..

3.使用GetDlgItem(IDC_EDIT1)->SetWindowTextW(变量名)     来更新变量内容。

采用关联变量时,分两类:

当关联的数据是Value(数值型)数据时:

使用UpdateData(TRUE)     将从获取控件值------>该值自动更新到关联变量中  【编辑器输入值-> cpp中实际对应的关联变量m_edit中】

使用UpdateData(FALSE)   将更新控件值------>关联变量的值更新到界面中

注:UpdateData()默认为True。

当关联数据为控件型(Control类型):

Control是一个控件,可以使用该控件的所有方法。

如假设关联变量为m_CEdit.则可以使用m_CEdit.GetWindowTextW(变量名),将空间内容赋值到变量中

使用m_CEdit.SetWindowTextW(变量名),将变量值更新到控件上。

以完成一个简单的计算器加运算为例来说明当关联的数据是Value(数值型)数据时的处理过程:

在Edit Control设置视图上,点击添加变量

m_num1,m_num2,m_result均为编辑控件。

 实际代码添加内容如下:

//MyCalDlg.h中 public: // 数值1 int m_num1; // 数值2 int m_num2; int m_result; //MyCalDlg.cpp中 CMyCalDlg::CMyCalDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_MYCAL_DIALOG, pParent) , m_num1(20) , m_num2(50) , m_result(0) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMyCalDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_num1);//文本数据保存到m_num1变量中,DDX_Text可以理解为把字符串变量和控件的文本(WindowText)关联起来 DDX_Text(pDX, IDC_EDIT2, m_num2); DDX_Text(pDX, IDC_EDIT3, m_result); }

点击计算按钮,算出两数之和。

void CMyCalDlg::OnBnClickedButton1() { UpdateData();//UpdateData默认参数为true:将控件里面的数值刷新保存到关联变量中 m_result = m_num1 + m_num2;//没有加入UpdateData函数时,m_num1,m_num2都,将控件上输入的数据刷新到绑定的成员变量上来。此时m_num1为实际输入值11,22 UpdateData(false);//FALSE:将关联变量(成员变量)中的值刷新到控件中显示。 } View Code

 以完成简单的Edit Control控件文本显示为例说明当关联的数据是Control(控件型)数据时的处理过程:

控件ID为:IDC_EDIT6 (Edit Control)

 

 实际代码添加内容如下:

//MyCalDlg.h public: CEdit m_edit; View Code //MyCalDlg.cpp void CMyCalDlg::DoDataExchange(CDataExchange* pDX) { DDX_Control(pDX, IDC_EDIT6, m_edit);//控件型关联变量 } View Code

点击测试按钮后,控件设置的文本会显示在弹出对话框中

【DDX_Control()的作用可以理解为把变量和控件本身关联起来】

BOOL CMyCalDlg::OnInitDialog() { CDialogEx::OnInitDialog(); m_edit.SetWindowText(L"设置显示文本"); ... } View Code BEGIN_MESSAGE_MAP(CMyCalDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, &CMyCalDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, &CMyCalDlg::OnBnClickedButton2) END_MESSAGE_MAP() void CMyCalDlg::OnBnClickedButton2() { CString str; m_edit.GetWindowText(str); MessageBox(str); } View Code

总结

数值型关联变量和控件型关联变量

1、如何选择使用哪一种类型的变量?    如果你是操作它的数值,只要关心数值,不关心控件的样式、风格,可以选择数值型关联变量;   如果要关心控件的风格,样式等,要操作控件,需要建立控件型关联变量。

2、一种控件能不能可以同时关联两个类型的变量。

3、数值型关联变量与控件型关联变量相关转化关系: 只有数值型关联变量,是不能得到控件型关联变量的,同时也不能得到控件的窗口指针, 但是,拥有控件型关联变量,一般能够获取到控件中的数值,比如,又有窗口指针,GetWindowText; 

   控件型能处理数值,数值型不能处理控件。

4、数值型关联变量需要UpdateData,控件型关联变量不需要调用UpdateData。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭