Share via


CDialog クラス

ダイアログ ボックスを画面に表示するために使用される基本クラス。

構文

class CDialog : public CWnd

メンバー

パブリック コンストラクター

名前 説明
CDialog::CDialog CDialog オブジェクトを構築します。

パブリック メソッド

名前 説明
CDialog::Create CDialog オブジェクトを初期化します。 モードレス ダイアログ ボックスを作成し、オブジェクトに CDialog アタッチします。
CDialog::CreateIndirect (リソース ベースではなく) メモリ内のダイアログ ボックス テンプレートからモードレス ダイアログ ボックスを作成します。
CDialog::D oModal モーダル ダイアログ ボックスを呼び出し、完了したら返します。
CDialog::EndDialog モーダル ダイアログ ボックスを閉じます。
CDialog::GetDefID ダイアログ ボックスの既定のプッシュ ボタン コントロールの ID を取得します。
CDialog::GotoDlgCtrl ダイアログ ボックス内の指定したダイアログ ボックス コントロールにフォーカスを移動します。
CDialog::InitModalIndirect (リソース ベースではなく) メモリ内のダイアログ ボックス テンプレートからモーダル ダイアログ ボックスを作成します。 パラメーターは、関数 DoModal が呼び出されるまで格納されます。
CDialog::MapDialogRect 四角形のダイアログ ボックスの単位を画面の単位に変換します。
CDialog::NextDlgCtrl ダイアログ ボックス内の次のダイアログ ボックス コントロールにフォーカスを移動します。
CDialog::OnInitDialog ダイアログ ボックスの初期化を拡張するためにオーバーライドします。
CDialog::OnSetFont ダイアログ ボックス コントロールがテキストを描画するときに使用するフォントを指定するには、オーバーライドします。
CDialog::PrevDlgCtrl ダイアログ ボックスの前のダイアログ ボックス コントロールにフォーカスを移動します。
CDialog::SetDefID ダイアログ ボックスの既定の押ボタン コントロールを、指定した押ボタンに変更します。
CDialog::SetHelpID ダイアログ ボックスの状況依存のヘルプ ID を設定します。

保護メソッド

名前 説明
CDialog::OnCancel [キャンセル] ボタンまたは ESC キー アクションを実行する場合はオーバーライドします。 既定値はダイアログ ボックスを閉じ、 DoModal IDCANCEL を返します。
CDialog::OnOK モーダル ダイアログ ボックスで [OK] ボタン アクションを実行するには、オーバーライドします。 既定値はダイアログ ボックスを閉じ、 DoModal IDOK を返します。

解説

ダイアログ ボックスには、モーダルとモードレスの 2 種類があります。 アプリケーションを続行する前に、モーダル ダイアログ ボックスをユーザーが閉じる必要があります。 モードレス ダイアログ ボックスを使用すると、ユーザーはダイアログ ボックスを表示し、ダイアログ ボックスを取り消したり削除したりせずに別のタスクに戻ることができます。

CDialogオブジェクトは、ダイアログ テンプレートと -derived クラスのCDialog組み合わせです。 ダイアログ エディターを使用してダイアログ テンプレートを作成し、それをリソースに格納した後、クラスの追加ウィザードを使用して派生 CDialogクラスを作成します。

ダイアログ ボックスは、他のウィンドウと同様に、Windows からメッセージを受信します。 ダイアログ ボックスでは、ユーザーがダイアログ ボックスを操作する方法であるため、ダイアログ ボックスのコントロールからの通知メッセージを処理することに特に関心があります。 クラス ウィザード使用して、処理するメッセージを選択すると、適切なメッセージ マップ エントリとメッセージ ハンドラー メンバー関数がクラスに追加されます。 ハンドラー メンバー関数にアプリケーション固有のコードを記述するだけで済みます。

必要に応じて、メッセージ マップ エントリとメンバー関数をいつでも手動で記述できます。

最も単純なダイアログ ボックス以外では、メンバー変数を派生ダイアログ クラスに追加して、ユーザーがダイアログ ボックスのコントロールに入力したデータを格納したり、ユーザーのデータを表示したりします。 変数の追加ウィザードを使用して、メンバー変数を作成し、それらをコントロールに関連付けることができます。 同時に、変数の型と、各変数の値の許容範囲を選択します。 コード ウィザードは、派生ダイアログ クラスにメンバー変数を追加します。

メンバー変数とダイアログ ボックスのコントロール間のデータ交換を自動的に処理するために、データ マップが生成されます。 データ マップには、ダイアログ ボックス内のコントロールを適切な値で初期化し、データを取得し、データを検証する関数が用意されています。

モーダル ダイアログ ボックスを作成するには、派生ダイアログ クラスのコンストラクターを使用してスタック上にオブジェクトを構築し、呼び出 DoModal してダイアログ ウィンドウとそのコントロールを作成します。 モードレス ダイアログを作成する場合は、ダイアログ クラスのコンストラクターを呼び出 Create します。

Windows SDK の説明に従って DLGTEMPLATE データ構造を使用して、メモリ内にテンプレートを作成することもできます。 オブジェクトをCDialog作成したら、CreateIndirect を呼び出してモードレス ダイアログ ボックスを作成するか、InitModalIndirectDoModal を呼び出してモーダル ダイアログ ボックスを作成します。

交換と検証のデータ マップは、新しいダイアログ クラスに追加されたオーバーライド CWnd::DoDataExchange で書き込まれます。 Exchange と検証の 機能の詳細については、DoDataExchange メンバー関数 CWnd を参照してください。

プログラマとフレームワークの両方が、CWnd::UpdateData の呼び出しを通じて間接的に呼びDoDataExchange出されます

フレームワークは、ユーザーが [OK] ボタンをクリックしてモーダル ダイアログ ボックスを閉じるときに呼び出 UpdateData します。 ([キャンセル] ボタンがクリックされた場合、データは取得されません)。OnInitDialog の既定の実装では、コントロールの初期値を設定する呼び出しUpdateDataもあります。 通常は、コントロールをさらに初期化するためにオーバーライド OnInitDialog します。 OnInitDialog は、すべてのダイアログ コントロールが作成された後、およびダイアログ ボックスが表示される直前に呼び出されます。

モーダル ダイアログ ボックスまたはモードレス ダイアログ ボックスの実行中はいつでも呼び出 CWnd::UpdateData すことができます。

ダイアログ ボックスを手動で開発する場合は、派生ダイアログ ボックス クラスに必要なメンバー変数を自分で追加し、これらの値を設定または取得するためのメンバー関数を追加します。

モーダル ダイアログ ボックスは、ユーザーが [OK] ボタンまたは [キャンセル] ボタンを押したとき、またはコードがメンバー関数を呼び出すと、自動的に EndDialog 閉じます。

モードレス ダイアログ ボックスを実装する場合は、常にメンバー関数を OnCancel オーバーライドし、その中から呼び出 DestroyWindow します。 基底クラスCDialog::OnCancelEndDialogを呼び出さないでください。これは、ダイアログ ボックスを非表示にしますが破棄しないためです。 また、モードレス ダイアログ ボックスを削除thisするには、モードレス ダイアログ ボックスのオーバーライドPostNcDestroyも行う必要があります。モードレス ダイアログ ボックスは、通常は 〘 で割り当てられるnewためです。 モーダル ダイアログ ボックスは通常、フレーム上に構築され、クリーンアップは必要PostNcDestroyありません。

詳細についてはCDialog、「ダイアログ ボックス」を参照してください

継承階層

CObject

CCmdTarget

CWnd

CDialog

必要条件

ヘッダー: afxwin.h

CDialog::CDialog

リソース ベースのモーダル ダイアログ ボックスを作成するには、コンストラクターのパブリック 形式を呼び出します。

explicit CDialog(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

explicit CDialog(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

CDialog();

パラメーター

lpszTemplateName
ダイアログ ボックス テンプレート リソースの名前である null で終わる文字列を格納します。

nIDTemplate
ダイアログ ボックス テンプレート リソースの ID 番号を格納します。

pParentWnd
ダイアログ オブジェクトが属する親または所有者ウィンドウ オブジェクト (CWnd) を指します。 NULL の場合、ダイアログ オブジェクトの親ウィンドウは メイン アプリケーション ウィンドウに設定されます。

解説

コンストラクターの 1 つの形式は、テンプレート名によってダイアログ リソースへのアクセスを提供します。 もう 1 つのコンストラクターは、通常、IDD_ プレフィックス (IDD_DIALOG1 など) を持つテンプレート ID 番号によるアクセスを提供します。

メモリ内のテンプレートからモーダル ダイアログ ボックスを構築するには、最初にパラメーターなしの保護されたコンストラクターを呼び出し、次に呼び出 InitModalIndirectします。

上記のいずれかのメソッドを使用してモーダル ダイアログ ボックスを作成した後、次を呼び出します DoModal

モードレス ダイアログ ボックスを作成するには、コンストラクターの保護された形式を CDialog 使用します。 モードレス ダイアログ ボックスを実装するには、独自のダイアログ ボックス クラスを派生させる必要があるため、コンストラクターは保護されています。 モードレス ダイアログ ボックスの構築は、2 段階のプロセスです。 最初にコンストラクターを呼び出します。次に、メンバー関数を Create 呼び出してリソース ベースのダイアログ ボックスを作成するか、メモリ内のテンプレートからダイアログ ボックスを作成する呼び出しを行 CreateIndirect います。

CDialog::Create

リソースからダイアログ ボックス テンプレートを使用してモードレス ダイアログ ボックスを作成する呼び出し Create

virtual BOOL Create(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

virtual BOOL Create(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

パラメーター

lpszTemplateName
ダイアログ ボックス テンプレート リソースの名前である null で終わる文字列を格納します。

pParentWnd
ダイアログ オブジェクトが属する親ウィンドウ オブジェクト (CWnd) を指します。 NULL の場合、ダイアログ オブジェクトの親ウィンドウは メイン アプリケーション ウィンドウに設定されます。

nIDTemplate
ダイアログ ボックス テンプレート リソースの ID 番号を格納します。

戻り値

ダイアログ ボックスの作成と初期化が成功した場合、どちらのフォームも 0 以外の値を返します。それ以外の場合は 0。

解説

コンストラクター内に呼び出しを Create 配置するか、コンストラクターの呼び出し後に呼び出すことができます。

テンプレート名またはテンプレート ID 番号 (たとえば、IDD_DIALOG1) によってダイアログ ボックス テンプレート リソースにアクセスするために、2 つの形式 Create のメンバー関数が提供されます。

どちらのフォームでも、親ウィンドウ オブジェクトへのポインターを渡します。 pParentWnd が NULL の場合、親ウィンドウまたは所有者ウィンドウが メイン アプリケーション ウィンドウに設定されたダイアログ ボックスが作成されます。

メンバー関数は Create 、ダイアログ ボックスを作成した直後に返されます。

親ウィンドウの作成時にダイアログ ボックスが表示される場合は、ダイアログ ボックス テンプレートのWS_VISIBLE スタイルを使用します。 それ以外の場合 ShowWindowは、 . ダイアログ ボックス のスタイルとそのアプリケーションの詳細については、「MFC リファレンス」の Windows SDK およびウィンドウ スタイルの DLGTEMPLATE 構造を参照してください

関数を CWnd::DestroyWindow 使用して、関数によって作成されたダイアログ ボックスを Create 破棄します。

void CMyDialog::OnMenuShowSimpleDialog()
{
   //m_pSimpleDialog initialized to NULL in the constructor of CMyDialog class
   m_pSimpleDlg = new CSimpleDlg();
   //Check if new succeeded and we got a valid pointer to a dialog object
   if (m_pSimpleDlg != NULL)
   {
      BOOL ret = m_pSimpleDlg->Create(IDD_SIMPLEDIALOG, this);

      if (!ret) //Create failed.
      {
         AfxMessageBox(_T("Error creating Dialog"));
      }

      m_pSimpleDlg->ShowWindow(SW_SHOW);
   }
   else
   {
      AfxMessageBox(_T("Error Creating Dialog Object"));
   }
}

CDialog::CreateIndirect

このメンバー関数を呼び出して、メモリ内のダイアログ ボックス テンプレートからモードレス ダイアログ ボックスを作成します。

virtual BOOL CreateIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

virtual BOOL CreateIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

パラメーター

lpDialogTemplate
ダイアログ ボックスの作成に使用するダイアログ ボックス テンプレートを含むメモリを指します。 このテンプレートは、Windows SDK で説明されているように、DLGTEMPLATE 構造体と制御情報の形式です。

pParentWnd
ダイアログ オブジェクトの親ウィンドウ オブジェクト (CWnd) をポイントします。 NULL の場合、ダイアログ オブジェクトの親ウィンドウは メイン アプリケーション ウィンドウに設定されます。

lpDialogInit
DLGINIT リソースをポイントします。

hDialogTemplate
ダイアログ ボックス テンプレートを含むグローバル メモリへのハンドルを格納します。 このテンプレートは、ダイアログ ボックス内の各コントロールの DLGTEMPLATE 構造とデータの形式です。

戻り値

ダイアログ ボックスが正常に作成および初期化された場合は 0 以外。それ以外の場合は 0。

解説

メンバー関数は CreateIndirect 、ダイアログ ボックスを作成した直後に返されます。

親ウィンドウの作成時にダイアログ ボックスが表示される場合は、ダイアログ ボックス テンプレートのWS_VISIBLE スタイルを使用します。 それ以外の場合は、呼び出 ShowWindow して表示する必要があります。 テンプレートで他のダイアログ ボックス スタイルを指定する方法の詳細については、Windows SDK の DLGTEMPLATE 構造体を参照してください。

関数を CWnd::DestroyWindow 使用して、関数によって作成されたダイアログ ボックスを CreateIndirect 破棄します。

ActiveX コントロールを含むダイアログ ボックスには、DLGINIT リソースで提供される追加情報が必要です。

CDialog::D oModal

このメンバー関数を呼び出してモーダル ダイアログ ボックスを呼び出し、完了したらダイアログ ボックスの結果を返します。

virtual INT_PTR DoModal();

戻り値

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

解説

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

[OK] や [キャンセル] など、ダイアログ ボックスのいずれかのプッシュ ボタンをクリックすると、OnOKOnCancel などのメッセージ ハンドラー メンバー関数が呼び出され、ダイアログ ボックスを閉じようとします。 既定 OnOK のメンバー関数は、ダイアログ ボックス データを検証して更新し、結果 IDOK でダイアログ ボックスを閉じます。既定 OnCancel のメンバー関数は、ダイアログ ボックス データを検証または更新せずに、結果 IDCANCEL でダイアログ ボックスを閉じます。 これらのメッセージ ハンドラー関数をオーバーライドして、動作を変更できます。

Note

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;
   };
}

CDialog::EndDialog

モーダル ダイアログ ボックスを終了するには、このメンバー関数を呼び出します。

void EndDialog(int nResult);

パラメーター

nResult
ダイアログ ボックスから呼び出し元 DoModalに返される値を格納します。

解説

このメンバー関数は、戻りDoModalとして nResult を返します。 モーダル ダイアログ ボックスが EndDialog 作成されるたびに処理を完了するには、この関数を使用する必要があります。

OnInitDialog でもいつでも呼び出EndDialogすことができます。その場合は、ダイアログ ボックスが表示される前または入力フォーカスが設定される前にダイアログ ボックスを閉じる必要があります。

EndDialog は、ダイアログ ボックスをすぐに閉じません。 代わりに、現在のメッセージ ハンドラーが戻るとすぐにダイアログ ボックスを閉じるように指示するフラグを設定します。

void CMyDialog::OnMenuShowSimpleModal()
{
   CSimpleDlg myDlg;
   INT_PTR nRet = myDlg.DoModal();

   if (nRet == IDOK || nRet == 5)
   {
      AfxMessageBox(_T("Dialog closed successfully"));
   }
}

 

void CSimpleDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
   UNREFERENCED_PARAMETER(nFlags);
   // Do something

   int nRet = point.x; // Just any value would do!
   EndDialog(nRet);    // This value is returned by DoModal!

   // Do something

   return; // Dialog closed and DoModal returns only here!
}

CDialog::GetDefID

メンバー関数を GetDefID 呼び出して、ダイアログ ボックスの既定のプッシュ ボタン コントロールの ID を取得します。

DWORD GetDefID() const;

戻り値

32 ビット値 ( DWORD)。 既定の押ボタンに ID 値がある場合、上位ワードにはDC_HASDEFIDが含まれており、下位ワードには ID 値が含まれます。 既定のプッシュ ボタンに ID 値がない場合、戻り値は 0 になります。

解説

これは通常、[OK] ボタンです。

CDialog::GotoDlgCtrl

ダイアログ ボックスの指定したコントロールにフォーカスを移動します。

void GotoDlgCtrl(CWnd* pWndCtrl);

パラメーター

pWndCtrl
フォーカスを受け取るウィンドウ (コントロール) を識別します。

解説

pWndCtrl として渡すコントロール (子ウィンドウ) へのポインターを取得するには、CWnd オブジェクトへのポインターをCWnd::GetDlgItem返すメンバー関数を呼び出します。

CWnd::GetDlgItem例を参照してください。

CDialog::InitModalIndirect

メモリ内に構築するダイアログ ボックス テンプレートを使用してモーダル ダイアログ オブジェクトを初期化するには、このメンバー関数を呼び出します。

BOOL InitModalIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

    BOOL InitModalIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

パラメーター

lpDialogTemplate
ダイアログ ボックスの作成に使用するダイアログ ボックス テンプレートを含むメモリを指します。 このテンプレートは、Windows SDK で説明されているように、DLGTEMPLATE 構造体と制御情報の形式です。

hDialogTemplate
ダイアログ ボックス テンプレートを含むグローバル メモリへのハンドルを格納します。 このテンプレートは、ダイアログ ボックス内の各コントロールの DLGTEMPLATE 構造とデータの形式です。

pParentWnd
ダイアログ オブジェクトが属する親または所有者ウィンドウ オブジェクト (CWnd) を指します。 NULL の場合、ダイアログ オブジェクトの親ウィンドウは メイン アプリケーション ウィンドウに設定されます。

lpDialogInit
DLGINIT リソースをポイントします。

戻り値

ダイアログ オブジェクトが正常に作成および初期化された場合は 0 以外。それ以外の場合は 0。

解説

モーダル ダイアログ ボックスを間接的に作成するには、まず、メモリのグローバル ブロックを割り当て、ダイアログ ボックス テンプレートを入力します。 次に、空 CDialog のコンストラクターを呼び出して、ダイアログ ボックス オブジェクトを構築します。 次に、メモリ内ダイアログ ボックス テンプレートへのハンドルを格納する呼び出し InitModalIndirect を行います。 DoModal メンバー関数が呼び出されると、Windows ダイアログ ボックスが作成され、後で表示されます。

ActiveX コントロールを含むダイアログ ボックスには、DLGINIT リソースで提供される追加情報が必要です。

CDialog::MapDialogRect

四角形のダイアログ ボックスの単位を画面単位に変換する呼び出し。

void MapDialogRect(LPRECT lpRect) const;

パラメーター

lpRect
変換するダイアログ ボックス座標を 含む RECT 構造体または CRect オブジェクトを指します。

解説

ダイアログ ボックスの単位は、ダイアログ ボックス テキストに使用されるフォント内の文字の平均幅と高さから派生した現在のダイアログ ボックスの基本単位に関して記述されます。 1 つの水平単位はダイアログ ボックスの基本幅単位の 4 分の 1、垂直単位はダイアログ ボックスの基本高さの単位の 8 分の 1 です。

Windows 関数はGetDialogBaseUnitsシステム フォントのサイズ情報を返しますが、リソース定義ファイルで DS_Standard Edition TFONT スタイルを使用する場合は、ダイアログ ボックスごとに異なるフォントを指定できます。 Windows 関数は MapDialogRect 、このダイアログ ボックスに適したフォントを使用します。

このメンバー関数はMapDialogRect、lpRectダイアログ ボックスの単位を画面単位 (ピクセル) に置き換え、四角形を使用してダイアログ ボックスを作成したり、ボックス内にコントロールを配置したりできるようにします。

CDialog::NextDlgCtrl

ダイアログ ボックスの次のコントロールにフォーカスを移動します。

void NextDlgCtrl() const;

解説

フォーカスがダイアログ ボックスの最後のコントロールにある場合は、最初のコントロールに移動します。

CDialog::OnCancel

フレームワークは、ユーザーが [キャンセル] をクリックするか、モーダルダイアログ ボックスまたはモードレス ダイアログ ボックスで ESC キーを押したときに、このメソッドを呼び出します。

virtual void OnCancel();

解説

ユーザーが [キャンセル] をクリックするか ESC キーを押してダイアログ ボックスを閉じたときにアクション (古いデータの復元など) を実行するには、このメソッドをオーバーライドします。 既定では、EndDialog を呼び出して DoModal から IDCANCEL が返されるため、モーダル ダイアログ ボックスが閉じます。

モードレス ダイアログ ボックスで [キャンセル] ボタンを実装する場合は、メソッドをOnCancelオーバーライドし、その中で DestroyWindow を呼び出す必要があります。 基底クラス のメソッドを呼び出さないでください。呼び出 EndDialogされるため、ダイアログ ボックスは非表示になりますが、破棄されません。

Note

Windows XP でコンパイルされたプログラムでオブジェクトを CFileDialog 使用する場合、このメソッドをオーバーライドすることはできません。 詳細についてはCFileDialog、「CFileDialog クラス」を参照してください

void CSimpleDlg::OnCancel()
{
   // TODO: Add extra cleanup here

   // Ensure that you reset all the values back to the
   // ones before modification. This handler is called
   // when the user doesn't want to save the changes.

   if (AfxMessageBox(_T("Are you sure you want to abort the changes?"),
                     MB_YESNO) == IDNO)
   {
      // Give the user a chance if he has unknowingly hit the
      // Cancel button. If he says No, return. Don't reset. If
      // Yes, go ahead and reset the values and close the dialog.
      return;
   }

   m_nMyValue = m_nPrevValue;
   m_pMyString = NULL;

   CDialog::OnCancel();
}

CDialog::OnInitDialog

このメソッドは、メッセージに応答して WM_INITDIALOG 呼び出されます。

virtual BOOL OnInitDialog();

戻り値

アプリケーションが入力フォーカスをダイアログ ボックスのコントロールのいずれかに設定するかどうかを指定します。 0 以外の値を返す場合 OnInitDialog 、Windows は入力フォーカスを既定の場所 (ダイアログ ボックスの最初のコントロール) に設定します。 アプリケーションは、ダイアログ ボックスのコントロールのいずれかに入力フォーカスを明示的に設定した場合にのみ、0 を返すことができます。

解説

Windows は、作成、CreateIndirectまたは DoModal 呼び出し中にダイアログ ボックスにメッセージを送信WM_INITDIALOGします。この呼び出しは、ダイアログ ボックスが表示される直前に発生します。

ダイアログ ボックスの初期化時に特別な処理を実行する場合は、このメソッドをオーバーライドします。 オーバーライドされたバージョンでは、最初に基底クラス OnInitDialog を呼び出しますが、その戻り値は無視します。 通常、オーバーライドされたメソッドから戻ります TRUE

Windows は、 OnInitDialog すべての Microsoft Foundation クラス ライブラリ ダイアログ ボックスに共通する標準のグローバル ダイアログ ボックス プロシージャを使用して関数を呼び出します。 この関数はメッセージ マップを介して呼び出されないため、このメソッドのメッセージ マップ エントリは必要ありません。

Note

Windows Vista 以降のオペレーティング システムでコンパイルされたプログラムでオブジェクトを使用 CFileDialog する場合、このメソッドをオーバーライドすることはできません。 Windows Vista 以降でのCFileDialog変更の詳細については、「CFileDialog クラス」を参照してください

BOOL CSimpleDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   // TODO: Add extra initialization here
   m_cMyEdit.SetWindowText(_T("My Name")); // Initialize control values
   m_cMyList.ShowWindow(SW_HIDE);          // Show or hide a control, etc.

   return TRUE; // return TRUE unless you set the focus to a control
   // EXCEPTION: OCX Property Pages should return FALSE
}

CDialog::OnOK

ユーザーが [OK] ボタン (IDOK のボタン) をクリックしたときに呼び出されます。

virtual void OnOK();

解説

[OK] ボタンがアクティブになったときにアクションを実行するには、このメソッドをオーバーライドします。 ダイアログ ボックスにデータの自動検証と交換が含まれている場合、このメソッドの既定の実装では、ダイアログ ボックスのデータが検証され、アプリケーション内の適切な変数が更新されます。

モードレス ダイアログ ボックスで [OK] ボタンを実装する場合は、メソッドをOnOKオーバーライドし、その中で DestroyWindow を呼び出す必要があります。 ダイアログ ボックスを非表示にするが破棄しない EndDialog を呼び出すので、基底クラス メソッドを呼び出さないでください。

Note

Windows XP でコンパイルされたプログラムでオブジェクトを CFileDialog 使用する場合、このメソッドをオーバーライドすることはできません。 詳細についてはCFileDialog、「CFileDialog クラス」を参照してください

void CSimpleDlg::OnOK()
{
   // TODO: Add extra validation here

   // Ensure that your UI got the necessary input
   // from the user before closing the dialog. The
   // default OnOK will close this.
   if (m_nMyValue == 0) // Is a particular field still empty?
   {
      // Inform the user that he can't close the dialog without
      // entering the necessary values and don't close the
      // dialog.
      AfxMessageBox(_T("Please enter a value for MyValue"));
      return;
   }

   CDialog::OnOK(); // This will close the dialog and DoModal will return.
}

CDialog::OnSetFont

ダイアログ ボックス コントロールがテキストを描画するときに使用するフォントを指定します。

Virtual void OnSetFont(CFont* pFont);

パラメーター

pFont
[in]このダイアログ ボックスのすべてのコントロールの既定のフォントとして使用されるフォントへのポインターを指定します。

解説

ダイアログ ボックスでは、指定したフォントがすべてのコントロールの既定値として使用されます。

ダイアログ エディターは、通常、ダイアログ ボックス テンプレート リソースの一部としてダイアログ ボックスのフォントを設定します。

Note

Windows Vista 以降のオペレーティング システムでコンパイルされたプログラムでオブジェクトを使用 CFileDialog する場合、このメソッドをオーバーライドすることはできません。 Windows Vista 以降でのCFileDialog変更の詳細については、「CFileDialog クラス」を参照してください

CDialog::PrevDlgCtrl

ダイアログ ボックスの前のコントロールにフォーカスを設定します。

void PrevDlgCtrl() const;

解説

フォーカスがダイアログ ボックスの最初のコントロールにある場合は、ボックス内の最後のコントロールに移動します。

CDialog::SetDefID

ダイアログ ボックスの既定の押ボタン コントロールを変更します。

void SetDefID(UINT nID);

パラメーター

nID
既定になるプッシュ ボタン コントロールの ID を指定します。

CDialog::SetHelpID

ダイアログ ボックスの状況依存のヘルプ ID を設定します。

void SetHelpID(UINT nIDR);

パラメーター

nIDR
状況依存のヘルプ ID を指定します。

関連項目

MFC サンプル DLGCBR32
MFC サンプル DLGTEMPL
CWnd クラス
階層図