关于MFC中控件更新的几种方法

之前在做ADC波形显示器时,需要实现点击按钮开始/关闭采样,同时也需要在文本框输出日志和当前采样状态信息等,点击按钮后按钮的形态也可能需要变化。这些功能的实现都需要对MFC的空间进行动态更新。在解决此问题时,我也查找总结了两种较为常见的控件更新方法,可用于不同需求。

方法1:UpdateData方法

此方法为最简单的控件数据更新方法,只需要修改控件绑定的变量参数,然后使用UpdateData(False);函数将变量数据与控件同步即可。不要忘记在同步完成后将UpdateData恢复为True。

该函数具体功能如下:

将控件中的值更新到变量

UpdateData(TRUE);

将变量中的值更新到变量

UpdateData(False);

使用范例:

DDX_Text(pDX, IDC_SHOWER, ScanSign);
ScanSign(_T("采样已停止"))
UpdateData(TRUE);
ScanSign = _T("采样进行中");
UpdateData(FALSE);
//ScanSign的显示值在此处已更新

但要注意的是,UpdateData函数只能控制控件全局的数据更新,开启或关闭UpdateData会直接控制当前界面所有控件的同步状态,在控件过多或者只想操纵某一指定控件时较不适用。

方法2:使用GetDlgItem()函数

GetDlgItem()函数可以控制指定控件的数值更新,具体用法如下:

CString TempSign;
GetDlgItem(IDC_SHOWER)->SetWindowText(_T("采样进行中[") + TempSign + _T("s]")); //在badge显示运行时长

向GetDlgItem()函数内填写对应控件ID,然后->右侧使用SetWindowText()更新数据即可。该方式更加灵活,适用于单个控件的更新,且相比UpdateData效率更高,但如果需要全局控件更新,则该方法过于繁琐。

参考:http://www.cnblogs.com/skywatcher/p/3750059.html

点赞

发表回复

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像(暂时停用!)

Title - Artist
0:00