CPropertySheet::DoModal
更新 : 2007 年 11 月
モーダル プロパティ シートを表示します。
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