アプリケーションでのプロパティ シートの使用

更新 : 2007 年 11 月

アプリケーションでプロパティ シートを使用する手順は、次のとおりです。

  1. 各プロパティ ページのダイアログ テンプレート リソースを作成します。ユーザーがページを切り替えて使用することを考慮して、各ページはできる限り同じようにレイアウトします。

    すべてのダイアログ テンプレートのサイズを統一する必要はありません。フレームワークでは、最大のページのサイズを基準として、プロパティ シート内のプロパティ ページの表示に必要な領域を決定します。

    プロパティ ページのダイアログ テンプレート リソースを作成するときには、[ダイアログ] の [プロパティ] で以下のスタイルを指定する必要があります。

    • [Caption] で、ページのタブに表示するテキストを設定します。

    • [Style] の一覧の [子] をクリックします。

    • [Border] の一覧の [細枠] をクリックします。

    • [Title Bar] を [True] にします。

    • [Disabled] を [True] にします。

  2. 各プロパティ ページのダイアログ テンプレートに対応する CPropertyPage の派生クラスを作成します。「クラスの追加」を参照してください。基本クラスとして CPropertyPage を選択します。

  3. プロパティ ページの値を保持するメンバ変数を作成します。プロパティ ページは、特殊用途向けの一種のダイアログ ボックスであるため、プロパティ ページにメンバ変数を追加する手順は、ダイアログ ボックスにメンバ変数を追加する場合と同じです。詳細については、「ダイアログ コントロールのメンバ変数の定義」を参照してください。

  4. ソース コードに CPropertySheet オブジェクトを構築します。通常、CPropertySheet オブジェクトは、プロパティ シートを表示するコマンドのハンドラに構築します。このオブジェクトは、プロパティ シート全体を表します。DoModal 関数を使用してモーダル プロパティ シートを作成すると、既定でプロパティ シートには [OK]、[キャンセル]、[適用] という 3 つのコマンド ボタンが付加されます。Create 関数を使用して作成されるモードレス プロパティ シートの場合は、コマンド ボタンは作成されません。ほかのコントロール (プレビュー ウィンドウなど) を追加する場合、またはモードレス プロパティ シートを表示する場合以外は、CPropertySheet からクラスを派生させる必要はありません。この手順は、モードレス プロパティ シートの場合に必要となります。なぜなら、モードレス プロパティ シートにはプロパティ シートを閉じる既定のコントロールがないためです。

  5. 各ページをプロパティ シートに追加するために、次の操作を行います。

    • 作成した CPropertyPage の派生クラスごとに 1 つのオブジェクトを構築します。

    • 各ページごとに CPropertySheet::AddPage 関数を呼び出します。

    通常は、CPropertySheet オブジェクトを作成したオブジェクトによって CPropertyPage オブジェクトも作成されます。ただし、CPropertySheet 派生クラスを実装した場合は、CPropertyPage オブジェクトを CPropertySheet オブジェクトに埋め込み、CPropertySheet の派生クラスのコンストラクタから各ページの AddPage を呼び出すことができます。AddPage によって、プロパティ シートのページ リストに CPropertyPage オブジェクトが組み込まれますが、実際のウィンドウは作成されません。したがって、プロパティ シート ウィンドウの作成によって AddPage が呼び出されるのを待つ必要はなく、プロパティ シートのコンストラクタから AddPage メンバ関数を呼び出すことができます。

    既定では、プロパティ シートに 1 列で表示しきれない数のタブがある場合、タブは複数の列で表示されます。複数列の表示を無効にするには、パラメータを FALSE. に設定して CPropertySheet::EnableStackedTabs を呼び出します。プロパティ シートを作成するときには、EnableStackedTabs を呼び出す必要があります。

  6. CPropertySheet::DoModal または Create を呼び出して、プロパティ シートを表示します。DoModal を呼び出すと、プロパティ シートがモーダル ダイアログ ボックスとして作成されます。Create を呼び出すと、プロパティ シートがモードレス ダイアログ ボックスとして作成されます。

  7. 各プロパティ ページとプロパティ シートのオーナー間でデータを交換します。詳細については、「データの交換」を参照してください。

プロパティ シートの使用例については、MFC の「標準のサンプル」の PROPDLG を参照してください。

参照

概念

プロパティ シート (MFC)