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オブジェクトは、ダイアログ テンプレートと -派生クラスの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::OnCancelは呼び出さないため、呼び出 EndDialogさないでください。ダイアログ ボックスは非表示になりますが、破棄されません。 また、削除するには、モードレス ダイアログ ボックスの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 つのコンストラクターは、テンプレート ID 番号によるアクセスを提供します。通常は 、IDD_ プレフィックス (IDD_DIALOG1 など) を使用します。

メモリ内のテンプレートからモーダル ダイアログ ボックスを構築するには、最初にパラメーターなしの保護されたコンストラクターを呼び出してから呼び出します 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::DoModal

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

virtual INT_PTR DoModal();

戻り値

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

注釈

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

ユーザーがダイアログ ボックス内のいずれかの押しボタン ([OK] や [キャンセル] など) をクリックすると、 OnOKOnCancel などのメッセージ ハンドラー メンバー関数が呼び出され、ダイアログ ボックスを閉じようとします。 既定 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;
   };
}

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 を行います。 Windows ダイアログ ボックスは、後で DoModal メンバー関数が呼び出されたときに作成され、表示されます。

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

CDialog::MapDialogRect

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

void MapDialogRect(LPRECT lpRect) const;

パラメーター

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

注釈

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

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

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

CDialog::NextDlgCtrl

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

void NextDlgCtrl() const;

注釈

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

CDialog::OnCancel

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

virtual void OnCancel();

注釈

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

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

注意

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 以外の値を返Windows、OnInitDialog入力フォーカスをダイアログ ボックスの最初のコントロールである既定の場所に設定します。 アプリケーションは、入力フォーカスをダイアログ ボックスのいずれかのコントロールに明示的に設定している場合にのみ、0 を返すことができます。

注釈

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

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

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

注意

Vista 以降のオペレーティング システムでコンパイルされたプログラムでオブジェクトを使用CFileDialogする場合、このメソッドWindowsオーバーライドすることはできません。 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 を呼び出すので、呼び出さないでください。

注意

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
[入力]このダイアログ ボックスのすべてのコントロールの既定のフォントとして使用されるフォントへのポインターを指定します。

注釈

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

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

注意

Vista 以降のオペレーティング システムでコンパイルされたプログラムでオブジェクトを使用CFileDialogする場合、このメソッドWindowsオーバーライドすることはできません。 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 クラス
階層図