CPropertySheet::DoModal

更新 : 2007 年 11 月

モーダル プロパティ シートを表示します。

virtual INT_PTR DoModal();

戻り値

正常終了した場合は IDOK または IDCANCEL を返します。それ以外の場合は 0 または -1 を返します。プロパティ シートがウィザード (「SetWizardMode」を参照) として確立された場合は、DoModal は ID_WIZFINISH または IDCANCEL のどちらかを返します。

解説

戻り値は、プロパティ シートを閉じるときに使ったコントロールの ID に対応します。この関数から戻ると、プロパティ シートのウィンドウやすべてのページは破棄されます。オブジェクト自身は存在したままです。通常、DoModal が IDOK を返したときは、CPropertyPage オブジェクトからデータを取得します。

モードレス プロパティ シートを表示するには、Create を呼び出します。

対応するダイアログ リソースからプロパティ ページが作成されるとき、初回例外が発生する可能性があります。これは、プロパティ ページによって、ページの作成前にダイアログ リソースのスタイルが必要なスタイルに変更されるためです。通常、リソースは書き込み禁止であるため、例外が発生する可能性があります。システムはこの例外を処理し、更新されたリソースのコピーを作成します。このような処理により、初回例外は無視できるようになります。

8xk61eyw.alert_note(ja-jp,VS.90).gifメモ :

非同期例外処理モデルを使ってコンパイルする場合、この例外はオペレーティング システムで処理する必要があります。例外処理モデルの詳細については、「/EH (例外処理モデル)」を参照してください。この場合、CPropertySheet::DoModal の呼び出しを catch (...) のような C++ の try-catch ブロックで囲まないでください。catch はすべての例外を処理します。このブロックによってオペレーティング システムが処理しようとしている例外も取り扱うことになり、予期しない動作になります。C++ 例外処理ハンドラを特定の例外タイプで使用するか、またはアクセス違反例外がオペレーティング システムに渡される構造化例外処理を使用すると安全です。

初回例外が生成されないようにするには、プロパティ シートに正しい ウィンドウ スタイル を手動で指定します。プロパティ シートに対して次のスタイルを設定する必要があります。

  • DS_3DLOOK

  • DS_CONTROL

  • WS_CHILD

  • WS_TABSTOP

次のオプションのスタイルも、初回例外を出すことなく使用できます。

  • DS_SHELLFONT

  • DS_LOCALEDIT

  • WS_CLIPCHILDREN

これ以外の Windows スタイルはプロパティ シートと互換性がないため、すべて無効にします。これは、拡張スタイルには当てはまりません。これらの標準スタイルを適切に設定すると、プロパティ シートの変更が不要になり、初回例外が生成されることもなくなります。

使用例

CPropertySheet::AddPage」の例を参照してください。

必要条件

ヘッダー : afxdlgs.h

参照

参照

CPropertySheet クラス

階層図

CDialog::DoModal

CPropertySheet::Create

その他の技術情報

CPropertySheet のメンバ