次の方法で共有


複数のドキュメント タイプ、ビュー、フレーム ウィンドウ

ドキュメント、ビュー、およびフレーム ウィンドウ内の標準関係は ドキュメント/ビューの作成で説明します。多くのアプリケーションでは、シングル ドキュメントの種類 (単一ドキュメントごとのドキュメントおよび 1 フレーム ウィンドウだけの一つのビューおよびその型の複数の開いている文書)をサポートします。ただし、アプリケーションは、それらの既定の一つ以上を変更する必要があります。

さらに詳しくは次のトピックをクリックしてください

  • 複数のドキュメントの種類

  • 複数のビュー

  • 複数のフレーム ウィンドウ

  • 分割ウィンドウ

複数のドキュメントの種類

MFC アプリケーション ウィザードでは、のシングル ドキュメント クラスを作成します。ただし、場合によっては、複数のドキュメント型をサポートする必要がある場合がありますが。たとえば、アプリケーションは、ワークシートを必要とし、ドキュメントをグラフ化する場合があります。各ドキュメント型が自身のドキュメント クラスと、独自のビュー クラスで表されます。ユーザーがコンテナーに存在するファイル新しいコマンドを選択すると、フレームワークはサポートされているドキュメント型を示すダイアログ ボックスが表示されます。次に、ユーザーが選択した種類のドキュメントを作成します。各ドキュメント型が自身のドキュメントテンプレートのオブジェクトによって管理されます。

追加のドキュメント クラスを作成するには、 クラスの追加を参照してください。から派生し、要求されたドキュメントの情報を提供するクラス型として CDocument を選択します。新しいクラスのデータを実行します。

フレームワークに追加のドキュメント クラスについて通知するために、アプリケーション クラスの InitInstance のオーバーライドの AddDocTemplate にコントロールを追加します。詳細については、 ドキュメント テンプレートを参照してください。

複数のビュー

多くのドキュメントは一つのビューだけですが、単一ドキュメントの複数のビューをサポートする可能性があります。複数のビューを実行するために、ドキュメント オブジェクトは、ビューの一覧をしたがって、ビューを追加および削除するためのメンバー関数を提供し、複数のビューにドキュメントのデータがいつ変更したかを通知するための UpdateAllViews のメンバー関数を提供します。

MFC は同じドキュメントの複数のビューを必要とする 3 とおりのユーザー インターフェイスをサポートします。これらのモデルは次のとおりです:

  • 同じクラス、別の MDI ドキュメント フレーム ウィンドウのビュー オブジェクト。

    ドキュメントの 2 番目のフレーム ウィンドウの作成をサポートする場合があります。ユーザーが同じドキュメントのビューの 2 番目のゾーンを開き、ドキュメントの異なる部分を同時に表示するには、 2 種類のゾーンを使用する新しいウィンドウ コマンドを選択できます。フレームワークは、ドキュメントに接続されている最初のフレーム ウィンドウとビューを複製して、 MDI アプリケーションのウィンドウ メニューのウィンドウ コマンドをサポートしています。

  • 同じドキュメント フレーム ウィンドウの同じクラスのビュー オブジェクト。

    分割ウィンドウはドキュメントの複数の異なるビューにはシングル ドキュメント ウィンドウ ビュー内の領域を分割されます。フレームワークは、同じビュー クラスから複数のビュー オブジェクトを作成します。詳細については、 分割ウィンドウを参照してください。

  • 一つのフレーム ウィンドウの異なるクラス ビュー オブジェクト。

    このモデルでは、分割ウィンドウのバリエーション、複数のビューは一つのフレーム ウィンドウを共有します。ビューは異なるクラス、同じを表示するさまざまな方法を提供する各ビューからドキュメント生成されます。たとえば、 1 種類のビューは、通常モードで他のビューにアウトライン モードで示す間、 Word のマルチプロセス ドキュメントを示す場合があります。分割線コントロールは、ユーザーがビューの相対サイズを調整できるようにします。

パートは、 b 分割次の図は、上に示した順序で、 c、 3 個のユーザーインターフェイス モデルを示します。

マルチ ビューによるユーザー インターフェイス

マルチ ビュー ユーザー インターフェイス

フレームワークは 分割ウィンドウに説明されているように、新しいウィンドウ コマンドを実行することとクラス CSplitterWndを提供することで、これらのモデルを提供します。開始点としてこれらを使用して他のモデルを実装できます。ビュー、およびフレーム ウィンドウ分割の異なる構成を説明するサンプル プログラムでは、 MFC のサンプルを参照してください。

UpdateAllViewsについては、 " MFC リファレンスと SCRIBBLE サンプルのクラス CView を参照してください。

複数のフレーム ウィンドウ

MDI アプリケーションに同じドキュメントの 2 番目のフレーム ウィンドウを作成するペイン メニューのウィンドウ コマンドを使用できます。詳細については、図 複数のビューのユーザー インターフェイスの最初のモデルを参照してください。

分割ウィンドウ

分割ウィンドウのペインは複数のスクロール可能なペインには、分割したすることができます。スクロール バーの横のウィンドウ フレームの分割線コントロール (または 「分割ボックス」)ユーザーがペインの相対サイズを調整できるようにします。各ペイン、同じドキュメントのビューです。「動的」分割では、ビューは図 複数のビューのユーザー インターフェイスのパート B に示すように、同じクラスです。静的な分割 「」では、ビューは異なるクラスを指定できます。両方の種類の分割ウィンドウは、クラス CSplitterWndでサポートされます。

同じクラスのビューの動的分割ウィンドウは、ユーザーがペインを複数のペインに自由に分割し、次にドキュメントのさまざまな部分を満たすために複数のペインをスクロールできるようにします。ユーザーは、ウィンドウ unsplit 追加ビューを削除できます。SCRIBBLE サンプル に追加された分割ウィンドウは、例です。このトピックでは、動的分割ウィンドウを作成するための手法について説明します。動的分割ウィンドウは、図 複数のビューのユーザー インターフェイスのパート B に示します。

異なるクラス ビューの静的な分割ウィンドウは、複数のペインに分割するペイン別のオブジェクトとの各メソッドから開始されます。たとえば、 Visual C++ ビットマップ エディターでは、イメージのペインは 2 個のペインを同時に示します。左ペインでビットマップのライフ サイズのイメージを表示します。右側のペインは同じの拡大や拡大したビットマップ イメージを表示します。ペインとペインの相対サイズを変更するときにドラッグ ユーザーが実行できる 「」分割バーで区切られています。静的分割ウィンドウは、図 複数のビューのユーザー インターフェイスのパート C に示します。

詳細については、 " MFC リファレンスMFC のサンプルのクラス CSplitterWnd を参照してください。

参照

概念

ドキュメント/ビュー アーキテクチャ