MFCコントロール - コントロールの更新
ナビゲーションに移動
検索に移動
概要
CWnd::UpdateData
メソッドは、DDX/DDVサポートで値を更新する場合に使用する。
コントロールに入力された値を変数に格納する場合、UpdateData(TRUE)
またはUpdateData()
を使用する。
また、変数に格納された値をコントロールに反映する場合、UpdateData(FALSE)
を使用する。
サンプルコード
以下の例では、まず、ボタンを押下した時、UpdateData()でIDC_EDIT1に入力された文字列を変数m_xvEdit1に格納している。
次に、変数m_xvEdit1の文字列を変数m_xvEdit2にコピーして、UpdateData(FALSE)で変数m_xvEdit2の文字列をIDC_EDIT2に反映させている。
// CMyDialog.h
class CMyDialog : public CDialogEx
{
// ...
private:
CString m_xvEdit1;
CString m_xvEdit2;
// ...
};
// CMyDialog.cpp
CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/) : CDialog(CMyDialog::IDD, pParent), m_xvEdit1(_T("")), m_xvEdit2(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_xvEdit1);
DDX_Text(pDX, IDC_EDIT2, m_xvEdit2);
}
void CMyDialog::OnBnClickedButton()
{
// UpdateData(TRUE)でDDX変数を更新
UpdateData();
// m_xvEdit1の内容をm_xvEdit2に代入
m_xvEdit2 = m_xvEdit1;
// UpdateData(FALSE)でDDX変数の内容をコントロールに反映
UpdateData(FALSE);
}
下図に、上記のサンプルコードの実行例を示す。
IDC_EDIT1にABCDEを入力し、Button1を押すと、IDC_EDIT2に反映される。