モードレス プロパティ シートの作成
通常、作成するプロパティ シートはモーダルです。モーダル プロパティ シートを使用する場合、ユーザーはアプリケーションの他の一部が使用する前に、プロパティ シートを閉じる必要があります。この技術情報では、ユーザーがプロパティ シートを開いて保存できるモードレス プロパティ シートを作成するために使用できるメソッドについて説明しますアプリケーションの他の一部を使用しているとき。
プロパティ シートを呼び出し、 CPropertySheet::CreateDoModalの代わりにモーダル ダイアログ ボックスとしてではなく、モードレス ダイアログ ボックスとして表示します。また、モードレス プロパティ シートをサポートする追加のタスクを実行します。
追加タスクの 1 つが、プロパティ シートが開いている場合に、変更する外部オブジェクトとプロパティ シート間のデータ交換です。これは、通常、標準モードレス ダイアログ ボックスと同じタスクです。このタスクの一部は、プロパティ設定を適用する外部オブジェクトとモードレス プロパティ シートの間の通信チャネルを実行しています。この実装は、モードレス プロパティ シートの CPropertySheet からクラスを派生する場合、より簡単です。この技術情報では、したとします。
モードレス プロパティ シートと外部オブジェクト (ビューの現在の選択項目の間の通信の 1 とおりの方法は、たとえば)プロパティ シートから外部オブジェクトへのポインターを定義することです。CPropertySheet- 1 個の外部オブジェクトから他の状態へのポインターをたびに、フォーカス変更変更する派生クラスの関数を SetMyExternalObject(など)は定義します。SetMyExternalObject 関数は、新しく選択された外部オブジェクトを反映するプロパティ ページの設定をリセットする必要があります。これを行うには、 SetMyExternalObject の関数は CPropertySheet のクラスに属する CPropertyPage のオブジェクトにアクセスできる必要があります。
プロパティ シート内のプロパティ ページへのアクセスを提供するほとんどの便利な手段は CPropertySheetの CPropertyPage のオブジェクトの派生オブジェクトを埋め込むことです。CPropertyPage を埋め込む CPropertySheetでオブジェクトが派生オブジェクトは、プロパティ シートの所有者が CPropertyPage のオブジェクトを作成し、プロパティ シートに CPropertySheet::AddPageして渡すモーダル ダイアログ ボックスの一般的なデザインとは異なります。
モードレス プロパティ シートの設定が外部オブジェクトに適用する必要があるかを判断するための多くのユーザーインターフェイスの方法があります。1 種類の方法は、たびにユーザーが変更された値現在のプロパティのページ設定を適用します。別の方法としては、ユーザーが外部オブジェクトにコミットされる前にそれをプロパティ ページの変更を収集できる適用のボタンを提供することです。適用のボタンを処理する方法については、技術情報 適用のボタンの処理を参照してください。