CDialog
(たとえば)から派生した基本クラスを作成し、CMyDlgBase
そこにすべての共通関数を配置して、CMyDlgBase
代わりにからダイアログ クラスを派生させますCDialog
。
CMyDlgBase
ダイアログ クラスで直接宣言されているかのように、関数を呼び出すことができるようになりました。
ダイアログに共通の項目を検証するためのサンプル コードを編集CDlg1
します (およびCDlg2
から派生しCMyDlgBase
ます)。エラー チェック コードは含まれていません。
BOOL CMyDlgBase::ValidateName(UINT nID)
{ CString ss;
CEdit *pEdit = GetDlgItem(nID);
pEdit->GetWindowText(ss);
if (ss.Find(_T("A")) < 0) // some kind of validation
{ MessageBox(_T("Name should contain the character 'A'"));
pEdit->SetFocus();
return FALSE;
}
return TRUE;
}
CDlg1::OnOK()
{ if (!ValidateName(IDC_DLG1_NAME)) // resource id value = 101
return;
CDialog::OnOK(); // This will close the dialog and DoModal will return.
}
CDlg2::OnOK()
{ if (!ValidateName(IDC_DLG2_NAME)) // resource id value = 102
return;
CDialog::OnOK(); // This will close the dialog and DoModal will return.
}