Share via


CDialog::DoModal

されたときにモーダル ダイアログ ボックスを開始し、ダイアログ ボックスの結果を返すには、このメンバー関数を呼び出します。

virtual INT_PTR DoModal( );

戻り値

ダイアログ ボックスを閉じるために使用される、CDialog::EndDialog のメンバー関数に渡された nResult のパラメーター値を指定する int の値。戻り値は [出力ウィンドウ]GetLastErrorのエラー情報を含める他のエラーが発生した関数がダイアログ ボックスを作成できない場合または IDABORT、– 1 です。

解説

このメンバー関数は、ダイアログ ボックスがアクティブな間、ユーザーとのやり取りを処理します。これはダイアログ ボックスをモーダルにするものですが; つまり、ユーザーは、他のウィンドウとダイアログ ボックスが閉じるまで操作できません。

ユーザーがダイアログ ボックスのプッシュ ボタンの 1 種類が[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

参照

関連項目

CDialog クラス

階層図

DialogBox

CWnd::IsDialogMessage