UpdateData函数的学习
来源:互联网 发布:装修全包 半包 知乎 编辑:程序博客网 时间:2024/06/07 05:52
在类向导中为控件添加相应的变量时,classwizard会为控件和变量建立一个相应的关联,下面以EditBox为例来说明:
选中Edit Control控件,鼠标右击,选择添加变量,选择变量类型为value,输入变量名称,权限为private,点击确定按钮。
上述操作的过程也可由开发者手动打入代码中,在代码中反映如下:
类的头文件:
private:
CString strFilePath;
类的实现文件:
void XxxDlg::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
DDX_Text(pDX, IDC_FILEPATH_EDIT, strFilePath);
}
注:上面的DoDataExchange 函数其实是为了实现一项数据动态绑定技术,DDX_XXX函数才是真正实现动态绑定技术的函数,该函数在MFC\Include\AFXDD_.H中声明。
此时即可在需要用的函数中使用UpdateData函数,其中
Updatedata(TRUE) 表示将控件的值赋值给成员变量,即从窗口编辑框中读入数据;
Updatedata(FALSE) 表示将成员变量的值赋值给控件,将数据从窗口显示。
举例:
给类添加俩个映射函数,其中OnBnClickedReferenceButton()为点击参照按钮对应的函数,OnEnChangeFilepathEdit()为编辑框内容变化即被调用的函数。
BEGIN_MESSAGE_MAP(PrnFileChooseDlg, CPropertyPage)
ON_EN_CHANGE(IDC_FILEPATH_EDIT, &PrnFileChooseDlg::OnEnChangeFilepathEdit)
ON_BN_CLICKED(IDC_REFERENCE_BUTTON, &PrnFileChooseDlg::OnBnClickedReferenceButton)
END_MESSAGE_MAP()
void XxxDlg::OnEnChangeFilepathEdit()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CPropertyPage::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateData(TRUE);//用户在编辑框中一边输入数据,UI上的数据内容一边赋给绑定的变量。
setNextBtnStatus();
}
//Click the reference button to choose the expected file.
void XxxDlg::OnBnClickedReferenceButton()
{
// TODO: Add your control notification handler code here
choosePrnFile();
}
void XxxDlg::choosePrnFile()
{
CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.prn)|*.prn|All Files (*.*)|*.*||"), NULL);
if (dlgFile.DoModal())
{
strFilePath = dlgFile.GetPathName();
setNextBtnStatus();
}
UpdateData(FALSE);//用户点击参照按钮选好文件地址后,赋给绑定的变量strFilePath,然后反映到对应的编辑框中。
}
//Set the status of the next button.
void XxxDlg::setNextBtnStatus()
{
pWnd = tmpSheet->GetDlgItem(ID_WIZNEXT);
if(strFilePath == _T(""))
{
pWnd->EnableWindow(FALSE);
}
else
{
pWnd->EnableWindow(TRUE);
}
}
头文件如下:
class XxxDlg: public CPropertyPage
{
DECLARE_DYNAMIC(PrnFileChooseDlg)
public:
XxxDlg();
virtual ~XxxDlg();
virtual BOOL OnSetActive();
virtual LRESULT OnWizardBack();
virtual LRESULT OnWizardNext();
// Dialog Data
enum { IDD = IDD_PRNFILECHOOSE_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnEnChangeFilepathEdit();
afx_msg void OnBnClickedReferenceButton();
virtual BOOL OnInitDialog();
private:
void setNextBtnStatus();
void initializeWizardBtns();
void choosePrnFile();
private:
CString strFilePath;
CPropertySheet *tmpSheet;
CWnd *pWnd;
};
- UpdateData函数的学习
- UpdateData函数的用法
- UpdateData()函数的用法
- MFC 的 UpdateData() 函数
- UpdateData()函数的应用
- UpdateData()函数的用法
- UpdateData()函数的使用
- UpdateData函数的使用
- UpdateData函数的使用
- DoDataExchange函数,UpdateData(TRUE)和UpdateData(FALSE)的区别
- UpdateData()函数
- UpdateData()函数
- UpdateData函数
- UpdateData()函数
- UpdateData() 函数
- UpdateData()函数
- UpdateData函数
- UpdateData函数
- 数据解析入库(vs2015)
- 蓝桥杯 颠倒的价牌(java题解)
- Java用webSocket实现tomcat的日志实时输出到web页面
- 【codevs 1063】合并果子
- BFC介绍
- UpdateData函数的学习
- javascript高级程序设计读书笔记--传递参数
- ffmpeg 音频视频 使用过程中碰到的问题记录
- SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- android 秒启动解决启动白屏,黑屏现象
- [leetcode]229. Majority Element II -- JavaScript 代码
- logstash中字符串的split,对每个子串进行json解析
- IP转换应用
- ubuntu上安装并使用nvm管理node版本