CDialog::DoModal
更新 : 2007 年 11 月
モーダル ダイアログ ボックスを起動します。この関数は、ダイアログ ボックスの実行が終了したときに戻ります。
virtual INT_PTR DoModal( );
戻り値
ダイアログ ボックスを閉じる CDialog::EndDialog メンバ関数のパラメータ nResult に渡す int 値を返します。ダイアログ ボックスを作成できなかった場合は、戻り値 –1 を返します。それ以外のエラーが発生した場合は、IDABORT を返します。その場合、Output window に GetLastError のエラー情報が含まれます。
解説
このメンバ関数は、ダイアログ ボックスがアクティブの間すべての対話を処理します。これにより、ダイアログ ボックスがモーダルになります。つまり、そのダイアログ ボックスを閉じるまで、ユーザーはほかのウィンドウを操作できません。
[OK]、[キャンセル] などのダイアログ ボックスのプッシュ ボタンをどれかクリックすると、OnOK または OnCancel のようなメッセージ ハンドラ メンバ関数が呼び出され、ダイアログ ボックスが閉じられます。既定の OnOK メンバ関数は、ダイアログ ボックスのデータの妥当性検査と更新をしてダイアログ ボックスを閉じ、IDOK を返します。既定の OnCancel メンバ関数は、ダイアログ ボックスのデータの妥当性検査や更新を行わずに、ダイアログ ボックスを閉じ、IDCANCEL を返します。このメッセージ ハンドラ関数をオーバーライドすると、独自の機能を持たせることができます。
メモ : |
---|
PreTranslateMessage はモーダル ダイアログ ボックス メッセージ処理のために呼び出されます。 |
使用例
void CMyDialog::OnMenuShowAboutDialog()
{
// Construct the dialog box passing the
// ID of the dialog template resource
CDialog aboutDlg(IDD_ABOUTBOX);
// Create and show the dialog box
INT_PTR nRet = -1;
nRet = aboutDlg.DoModal();
// Handle the return value from DoModal
switch (nRet)
{
case -1:
AfxMessageBox(_T("Dialog box could not be created!"));
break;
case IDABORT:
// Do something
break;
case IDOK:
// Do something
break;
case IDCANCEL:
// Do something
break;
default:
// Do something
break;
};
}
必要条件
ヘッダー : afxwin.h