MFCのUpdateDataメソッドはどのように使いますか?
MFCにおいて、CDialogクラスのUpdateData関数は、ダイアログコントロールの値と関連付けられている変数を同期するのに使います。その使用方法は以下のとおりです。
- ダイアログクラスのヘッダファイルで変数を定義し、ダイアログ内のコントロールと関連付けます。たとえば、編集ボックスコントロールの場合、CStringタイプの変数を関連付けることができます。
class CMyDialog : public CDialog
{
public:
CString m_strName;
// ...
};
- DoDataExchange 関数では、DDX_Text 関数を呼び出して、コントロールの値と連携した変数を同期します。
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
// ...
}
- ダイアログクラスのメンバ関数でUpdateData関数を呼び出すことで同期処理を行う。
void CMyDialog::OnOK()
{
if (UpdateData(TRUE))
{
// 同步成功,进行其他操作
// ...
CDialog::OnOK();
}
else
{
// 同步失败,处理错误
}
}
UpdateData関数を呼び出す際に、BOOL型の引数によって、コントロールから変数に更新(TRUE)、または変数からコントロールに更新(FALSE)かを指定できます。引数がTRUEの場合、UpdateData関数はダイアログ内のコントロールから値を取得し、関連する変数を更新します。引数がFALSEの場合、UpdateData関数は関連する変数から値を取得し、ダイアログ内のコントロールを更新します。
なお、UpdateData関数はBOOL型の値を返します。これは同期処理が成功したかどうかを表します。同期に成功するとTRUEが、同期に失敗するとFALSEが返ります。一般的にはUpdateData関数を呼び出した後は、戻り値を判定して、同期に失敗した時の処理を行うと良いでしょう。