「MFCコントロール - コントロールの更新」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
編集の要約なし |
||
(同じ利用者による、間の5版が非表示) | |||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
CWnd:: | <code>CWnd::UpdateData</code>メソッドは、DDX/DDVサポートで値を更新する場合に使用する。<br> | ||
<br> | <br> | ||
コントロールに入力された値を変数に格納する場合、<code>UpdateData(TRUE)</code>または<code>UpdateData()</code>を使用する。<br> | |||
また、変数に格納された値をコントロールに反映する場合、<code>UpdateData(FALSE)</code>を使用する。<br> | |||
<br><br> | <br><br> | ||
== サンプルコード == | == サンプルコード == | ||
< | 以下の例では、まず、ボタンを押下した時、UpdateData()でIDC_EDIT1に入力された文字列を変数m_xvEdit1に格納している。<br> | ||
CMyDialog.h | 次に、変数m_xvEdit1の文字列を変数m_xvEdit2にコピーして、UpdateData(FALSE)で変数m_xvEdit2の文字列をIDC_EDIT2に反映させている。<br> | ||
[[ファイル:UpdateData 01.png|フレームなし|中央]] | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// CMyDialog.h | |||
class CMyDialog : public CDialogEx | |||
{ | |||
// ... | |||
CString m_xvEdit1; | private: | ||
CString m_xvEdit1; | |||
CString m_xvEdit2; | |||
CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/) : CDialog( | // ... | ||
}; | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// CMyDialog.cpp | |||
CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/) : CDialog(CMyDialog::IDD, pParent), m_xvEdit1(_T("")), m_xvEdit2(_T("")) | |||
{ | { | ||
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); | m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); | ||
31行目: | 43行目: | ||
void CMyDialog::OnBnClickedButton() | void CMyDialog::OnBnClickedButton() | ||
{ | { | ||
// | // UpdateData(TRUE)でDDX変数を更新 | ||
UpdateData(); | UpdateData(); | ||
m_xvEdit2 = m_xvEdit1; // | |||
// m_xvEdit1の内容をm_xvEdit2に代入 | |||
m_xvEdit2 = m_xvEdit1; | |||
// UpdateData(FALSE)でDDX変数の内容をコントロールに反映 | |||
UpdateData(FALSE); | |||
} | } | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
下図に、上記のサンプルコードの実行例を示す。<br> | |||
IDC_EDIT1にABCDEを入力し、Button1を押すと、IDC_EDIT2に反映される。<br> | IDC_EDIT1にABCDEを入力し、Button1を押すと、IDC_EDIT2に反映される。<br> | ||
[[ファイル:UpdateData 02.png|フレームなし|中央]] | [[ファイル:UpdateData 02.png|フレームなし|中央]]<br> | ||
[[ファイル:UpdateData 03.png|フレームなし|中央]] | [[ファイル:UpdateData 03.png|フレームなし|中央]] | ||
<br><br> | <br><br> |
2021年1月29日 (金) 15:46時点における最新版
概要
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に反映される。