「MFCコントロール - コントロールの更新」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
7行目: 7行目:


== サンプルコード ==
== サンプルコード ==
[[ファイル:UpdateData 01.png|フレームなし|中央]]
  <source lang="c++">
  <source lang="c++">
  CMyDialog.h
  CMyDialog.h
37行目: 38行目:
  }
  }
  </source>
  </source>
[[ファイル:UpdateData 01.png|フレームなし|中央]]
<br>
まず、ボタンを押下したとき、UpdateData()でIDC_EDIT1に入力された文字列をm_xvEdit1に格納される。<br>
まず、ボタンを押下したとき、UpdateData()でIDC_EDIT1に入力された文字列をm_xvEdit1に格納される。<br>
次に、m_xvEdit1をm_xvEdit2に代入する。<br>
次に、m_xvEdit1をm_xvEdit2に代入する。<br>

2019年10月28日 (月) 22:19時点における版

概要

CWnd::UpdateData関数は、DDX/DDVサポートで値を更新するときに使う。

コントロールに入力された値を変数に格納する時に、UpdateData(TRUE)またはUpdateData()を呼ぶ。
変数に格納された値をコントロールに反映する時は、UpdateData(FALSE)を呼ぶ。


サンプルコード

UpdateData 01.png
 CMyDialog.h
 
 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()
 {
    // TODO: ここにコントロール通知ハンドラ コードを追加します。
    UpdateData();           // UpdateData(TRUE)でDDX変数を更新
    m_xvEdit2 = m_xvEdit1;  // m_xvEdit1の内容をm_xvEdit2に代入
    UpdateData(FALSE);      // UpdateData(FALSE)でDDX変数の内容をコントロールに反映
 }

まず、ボタンを押下したとき、UpdateData()でIDC_EDIT1に入力された文字列をm_xvEdit1に格納される。
次に、m_xvEdit1をm_xvEdit2に代入する。
最後に、UpdateData(FALSE)でm_xvEdit2の文字列をIDC_EDIT2に反映させる。

実行例
IDC_EDIT1にABCDEを入力し、Button1を押すと、IDC_EDIT2に反映される。

UpdateData 02.png
UpdateData 03.png