アプリケーションでのプロパティ シートの使用
アプリケーションでプロパティ シートを使用する手順は、次のとおりです。
各プロパティ ページのダイアログ テンプレート リソースを作成します。 ユーザーがページを切り替えて使用することを考慮して、各ページはできる限り同じようにレイアウトします。
すべてのダイアログ テンプレートのサイズを統一する必要はありません。 フレームワークでは、最大のページのサイズを基準として、プロパティ シート内のプロパティ ページの表示に必要な領域を決定します。
プロパティ ページのダイアログ テンプレート リソースを作成するときには、[ダイアログ] の [プロパティ] で以下のスタイルを指定する必要があります。
[Caption] で、ページのタブに表示するテキストを設定します。
[Style] の一覧の [子] をクリックします。
[Border] の一覧の [細枠] をクリックします。
[Title Bar] を [True] にします。
[Disabled] を [True] にします。
各プロパティ ページのダイアログ テンプレートに対応する CPropertyPage の派生クラスを作成します。 「クラスの追加」を参照してください。 基本クラスとして CPropertyPage を選択します。
プロパティ ページの値を保持するメンバー変数を作成します。 プロパティ ページは、特殊用途向けの一種のダイアログ ボックスであるため、プロパティ ページにメンバー変数を追加する手順は、ダイアログ ボックスにメンバー変数を追加する場合と同じです。 詳細については、「ダイアログ コントロールのメンバー変数の定義」を参照してください。
ソース コードに CPropertySheet オブジェクトを構築します。 通常、CPropertySheet オブジェクトは、プロパティ シートを表示するコマンドのハンドラーに構築します。 このオブジェクトは、プロパティ シート全体を表します。 モーダル プロパティ シートを作成する場合は、DoModal関数を既定で 3 つのコマンド ボタンを提供します。OK、キャンセル、および適用されます。 Create 関数を使用して作成されるモードレス プロパティ シートの場合は、コマンド ボタンは作成されません。 ほかのコントロール (プレビュー ウィンドウなど) を追加する場合、またはモードレス プロパティ シートを表示する場合以外は、CPropertySheet からクラスを派生させる必要はありません。 この手順は、モードレス プロパティ シートの場合に必要となります。なぜなら、モードレス プロパティ シートにはプロパティ シートを閉じる既定のコントロールがないためです。
各ページをプロパティ シートに追加するために、次の操作を行います。
作成した CPropertyPage の派生クラスごとに 1 つのオブジェクトを構築します。
各ページごとに CPropertySheet::AddPage 関数を呼び出します。
通常は、CPropertySheet オブジェクトを作成したオブジェクトによって CPropertyPage オブジェクトも作成されます。 ただし、CPropertySheet 派生クラスを実装した場合は、CPropertyPage オブジェクトを CPropertySheet オブジェクトに埋め込み、CPropertySheet の派生クラスのコンストラクターから各ページの AddPage を呼び出すことができます。 AddPage によって、プロパティ シートのページ リストに CPropertyPage オブジェクトが組み込まれますが、実際のウィンドウは作成されません。 したがって、プロパティ シート ウィンドウの作成によって AddPage が呼び出されるのを待つ必要はなく、プロパティ シートのコンストラクターから AddPage メンバー関数を呼び出すことができます。
既定では、プロパティ シートに 1 列で表示しきれない数のタブがある場合、タブは複数の列で表示されます。 複数列の表示を無効にするには、パラメーターを FALSE. に設定して CPropertySheet::EnableStackedTabs を呼び出します。 プロパティ シートを作成するときには、EnableStackedTabs を呼び出す必要があります。
CPropertySheet::DoModal または Create を呼び出して、プロパティ シートを表示します。 DoModal を呼び出すと、プロパティ シートがモーダル ダイアログ ボックスとして作成されます。 Create を呼び出すと、プロパティ シートがモードレス ダイアログ ボックスとして作成されます。
各プロパティ ページとプロパティ シートのオーナー間でデータを交換します。 詳細については、「データの交換」を参照してください。
プロパティ シートの使用例については、MFC の「標準のサンプル」の PROPDLG を参照してください。