MFCにおけるUpdateData()

MFCでは、CWndクラスのメンバ関数UpdateData()を使うことにより、ダイアログボックスなどのコントロールに関連付けられたデータを、ダイアログボックスに表示したり操作したりすることができます。

一般的に、ダイアログのコン トロールの値が変更された場合、UpdateData() 関数を使ってコン トロールの値を関連付けられた変数に更新する必要があります。逆に、変数の値が変更された場合は、同UpdateData() 関数を使って変数の値をダイアログのコン トロールに更新する必要があります。

UpdateData()関数を一般的に使用する手順は以下の通りです。

  1. ダイアログクラスで関連付ける変数を定義する。例えばDoDataExchange()関数で、DDX_Text()マクロを使用して関連付ける変数を定義する。
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_strData);
}
  1. コントロールの値が変更されたイベントの処理関数の中でUpdateData()関数を呼び出す。例えば、コントロールのOnEnChange()イベントの処理関数の中でUpdateData()関数を呼び出す:
void CMyDialog::OnEnChangeEdit1()
{
UpdateData(TRUE); // 将控件值更新到关联的变量中
}
  1. 変数の値をダイアログコントロールに更新したい場所に、UpdateData()関数を呼び出してください。たとえば、ダイアログを初期化するときに、変数の値をダイアログコントロールに更新するために、UpdateData(FALSE)を呼び出すことができます:
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_strData = "Hello World";
UpdateData(FALSE); // 将变量值更新到对话框控件中
return TRUE;
}

UpdateData() の引数が TRUE の時はコントロールの値を関連付けられた変数に更新し、FALSE の時は変数の値をダイアログのコントロールに更新することに注意してください。

UpdateData()メソッドは、データ更新が成功したかどうかを表すBOOL値を返します。 FALSEを返した場合は、データの変換または検証に失敗した可能性があります。UpdateData()の戻り値を使用して、データ更新が成功したかどうかを判別できます。たとえば、

if (UpdateData(TRUE))
{
// 数据更新成功
}
else
{
// 数据更新失败
}
bannerAds