MFC监测控件信息(动态刷新)

MFC控件数据动态刷新

前言:
今天笔者要分享的是:关于MFC中编辑框控件A改变value,随之改变编辑框控件B的value,此方法是沿用MFC消息响应机制提供的方法,希望对大家的问题有所帮助。

首先先介绍两个通知消息,也是我们今天的主角。
EN_CHANGE:当编辑框的文本被修改,新的文本显示之后发送的通知消息。
EN_UPDATE:当编辑框的文本被修改,新的文本显示之前发送的通知消息。

通知消息的运行过程:
编辑框控件给其父窗口发送消息来报告多种输入事件。在MFC应用程序中使用ON_EN消息映射宏将这些通知传递给了处理函数。
当控件的文本被修改后,编辑框控件会向其父窗口发送EN_CHANGE通知消息。
在父窗口中用ON_EN_CHANGE消息映射宏来注册一个消息响应函数来处理EN_CHANGE消息。
当文本输入到编辑框控件时,其父窗口就会调用这个注册的函数,来实时动态的更新获取文本。

1. 添加通知消息
进行添加通知消息后,会在资源中加载ON_EN_CHANGE宏和消息响应函数
void xxx::xxx() //xxx代表自己取的名字。
添加通知消息
2. ON_EN_CHANGE宏的作用
代码如下:
//基本上当前对话框用到的所有宏都在这里,响应函数另外写。

BEGIN_MESSAGE_MAP(CLaserControlDlg,CDialog)
	ON_EN_CHANGE(IDC_LC_PULSEWIDTH,&CLaserControlDlg::ResponseMessage) //举例
END_MESSAGE_MAP()
//CLaserControlDlg:代表当前类,也就是子类(派生类)
//CDialog:代表其父类,也就是基类。   这么理解就行了,具体不用深究,没意思也没必要。

该宏的作用是,当编辑框IDC_EDIT1中的文本内容发生变化时,就会调用OnEnChangeEdit1()函数。

编写消息处理函数,这里我以公司工程里的例子给大家简单介绍,上代码!!!

void CLaserControlDlg::ResponseMessage()
{
	//TODO:这里添加响应函数的实现代码
	UpdateData(); //默认为TRUE(UpdateData函数介绍放到结尾)

	//下面代码做什么不用管,你只需要知道自己想做什么即可。
	CString str;
	double m_nPulseWidth = ((1.0/(m_nFreq/1000))*1000)*(m_fDutyCycle/100);
	str.Format("%.3f",m_nPulseWidth);
	SetDlgItemText(IDC_LC_PULSEWIDTH,str);
}

UpdateData简单介绍:
如果可以,后面我会在MFC学习笔记中深入讲解,剖析这个函数。

/*BOOL CWnd::UpdateData(BOOL bSaveAndVaildate = 1) 函数原型
功能:简单一句话就是进行数据交换的函数。*/
UpdateData(TRUE) //将控件中的value给该控件的变量赋值。(本质)
UpdateData(FALSE) //将控件变量的value给控件,显示在界面上。

//UpdateData()函数默认为TRUE;

PS:MFC学习笔记是我即将着手写的一套自己学习MFC的学习过程。希望大家多多支持。
转载请注明出处,谢谢!

猜你喜欢

转载自blog.csdn.net/m0_43458204/article/details/106545768
今日推荐