CPropertySheet::DoModal
モーダル プロパティ シートを表示します。
virtual INT_PTR DoModal();
戻り値
正常終了した場合は IDOK または IDCANCEL を返します。それ以外の場合は 0 または -1 を返します。 プロパティ シートがウィザード (「SetWizardMode」を参照) として確立された場合は、DoModal は ID_WIZFINISH または IDCANCEL のどちらかを返します。
解説
戻り値は、プロパティ シートを閉じるときに使ったコントロールの ID に対応します。 この関数から戻ると、プロパティ シートのウィンドウやすべてのページは破棄されます。 オブジェクト自身は存在したままです。 通常、DoModal が IDOK を返したときは、CPropertyPage オブジェクトからデータを取得します。
モードレス プロパティ シートを表示するには、Create を呼び出します。
対応するダイアログ リソースからプロパティ ページが作成されるとき、初回例外が発生する可能性があります。 これは、プロパティ ページによって、ページの作成前にダイアログ リソースのスタイルが必要なスタイルに変更されるためです。 通常、リソースは書き込み禁止であるため、例外が発生する可能性があります。 システムはこの例外を処理し、更新されたリソースのコピーを作成します。 このような処理により、初回例外は無視できるようになります。
注意
非同期例外処理モデルを使ってコンパイルする場合、この例外はオペレーティング システムで処理する必要があります。 例外処理モデルの詳細については、「/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