對象和控件綁定
將控件窗口和類對象綁定具有兩大作用
如果和數據類對象綁定,對象和控件可以進行數據交換。
如果和控件類對象綁定,對象就可以代表整個控件。
與數據類型對象綁定的使用
- 數據類型對象和控件可實現數據交互
- 重寫父類成員虛函數DoDataExchange,在函數內部通過一系列的DDX_xxx函數,實現控件和數據類型對象的數據交互。
- 如果需要實現數據交互,調用UpdateData函數
a. UpdateData(TRUE) 控件-》變量
b. UpdateData(FALSE) 變量-》控件
與控件類型對象綁定的使用
- 控件類型對象和控件可實現對象代表整個控件
- 重寫父類成員虛函數DoDataExchange,在函數內部通過一系列的DDX_xxx函數,實現控件句柄和控件類型對象的綁定。
- 控件類型對象,就代表這個控件
#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();
}