【上位机——MFC】对象和控件绑定

对象和控件绑定

将控件窗口和类对象绑定具有两大作用

如果和数据类对象绑定,对象和控件可以进行数据交换。

如果和控件类对象绑定,对象就可以代表整个控件。

与数据类型对象绑定的使用

  1. 数据类型对象和控件可实现数据交互
  2. 重写父类成员虚函数DoDataExchange,在函数内部通过一系列的DDX_xxx函数,实现控件和数据类型对象的数据交互。
  3. 如果需要实现数据交互,调用UpdateData函数
    a. UpdateData(TRUE) 控件-》变量
    b. UpdateData(FALSE) 变量-》控件

与控件类型对象绑定的使用

  1. 控件类型对象和控件可实现对象代表整个控件
  2. 重写父类成员虚函数DoDataExchange,在函数内部通过一系列的DDX_xxx函数,实现控件句柄和控件类型对象的绑定。
  3. 控件类型对象,就代表这个控件
cpp 复制代码
#include <afxwin.h>
#include "resource.h"

class CMyDlg:public CDialog {

	DECLARE_MESSAGE_MAP()
public:
	enum{IDD=IDD_DIALOG1};

	CMyDlg():CDialog(IDD) {

	}

public:
	CString m_strEdit;//数据类型对象
	CEdit m_ctrlEdit;//控件类型对象
	virtual void DoDataExchange(CDataExchange* pDX);
	
	afx_msg void OnBnClickedButton2();
	afx_msg void OnBnClickedButton1();
	afx_msg void OnBnClickedOk();
};

void CMyDlg::DoDataExchange(CDataExchange* pDX) {

	//IDC_EDIT1 控件ID	//m_strEdit 变量
	//IDC_EDIT1控件和m_strEdit变量绑定
	DDX_Text(pDX, IDC_EDIT1, m_strEdit);
	//IDC_EDIT1控件和m_ctrlEdit控件类型对象绑定
	DDX_Control(pDX, IDC_EDIT1, m_ctrlEdit);

}


class CMyWinApp:public CWinApp {

public:
	virtual BOOL InitInstance();

};

BOOL CMyWinApp::InitInstance() {
	CMyDlg dlg;
	m_pMainWnd = &dlg;
	dlg.DoModal();
	return TRUE;
}

CMyWinApp theApp;

BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
	ON_BN_CLICKED(IDC_BUTTON1, &CMyDlg::OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON2, &CMyDlg::OnBnClickedButton2)
	ON_BN_CLICKED(IDOK, &CMyDlg::OnBnClickedOk)
END_MESSAGE_MAP()

void CMyDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	//刷新数据控件(IDC_EDIT1)上的数据刷新到变量(m_strEdit)上
	UpdateData(TRUE);
	AfxMessageBox(m_strEdit);
}


void CMyDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	m_strEdit = "ddddd0";
	//刷新数据,变量(m_strEdit)上的数据刷新到控件(IDC_EDIT1)上
	UpdateData(FALSE);
}



void CMyDlg::OnBnClickedOk()
{
	m_ctrlEdit.MoveWindow(0, 0, 200, 200);
	// TODO: 在此添加控件通知处理程序代码
	//CDialog::OnOK();
}
相关推荐
艾莉丝努力练剑5 分钟前
【QT】Qt常用控件与布局管理深度解析:从原理到实践的架构思考
linux·运维·服务器·开发语言·网络·qt·架构
杜子不疼.6 分钟前
用 Python 实现 RAG:从文档加载到语义检索全流程
开发语言·人工智能·python
chao1898447 分钟前
基于改进二进制粒子群算法的含需求响应机组组合问题MATLAB实现
开发语言·算法·matlab
lcj25117 分钟前
字符函数,字符串函数,内存函数
c语言·开发语言·c++·windows
独特的螺狮粉8 分钟前
古诗词飞花令随机出题小助手:鸿蒙Flutter框架 实现的古诗词游戏应用
开发语言·flutter·游戏·华为·架构·开源·harmonyos
cch891811 分钟前
C++、Python与汇编语言终极对比
java·开发语言·jvm
吃着火锅x唱着歌12 分钟前
深度探索C++对象模型 学习笔记 第三章 Data语意学(2)
c++·笔记·学习
Chockmans13 分钟前
2026年3月青少年软件编程(Python)等级考试试卷(六级)
开发语言·python·青少年编程·蓝桥杯·pycharm·python3.11·python六级
Python大数据分析@14 分钟前
使用Python和亮数据采集器搭建专利查询GUI系统
开发语言·python
Imxyk15 分钟前
P9242 [蓝桥杯 2023 省 B] 接龙数列
c++·算法·图论