次の方法で共有


CMDIChildWnd クラス

ウィンドウ管理用のメンバーも含めて、Windows のマルチ ドキュメント インターフェイス (MDI: multiple document interface) の子ウィンドウの機能が用意されています。

class CMDIChildWnd : public CFrameWnd

解説

MDI 子ウィンドウは、表示位置がデスクトップではなく、MDI フレーム ウィンドウの中である点を除いて、通常のフレーム ウィンドウのように見えます。 MDI 子ウィンドウは、自分自身のメニュー バーはありませんが、その代わりに MDI フレーム ウィンドウのメニューを共有します。 フレームワークは自動的に MDI フレーム メニューを変更して、現在アクティブな MDI 子ウィンドウに対応させます。

アプリケーションで有用な MDI 子ウィンドウを作るには、CMDIChildWnd クラスから新しいクラスを派生します。 アプリケーション固有のデータを格納するには、この派生クラスにメンバー変数を加えます。 ウィンドウにメッセージが送られたときに行われる処理を指定するには、派生クラスにメッセージ処理メンバー関数とメッセージ マップを実装します。

MDI 子ウィンドウを構築するには、次の 3 つの方法があります。

  • Create を使って直接構築

  • LoadFrame を使って直接構築

  • ドキュメント テンプレートを使って間接的に構築

Create または LoadFrame を呼び出す前に、C++ の new 演算子を使って、ヒープ上にフレーム ウィンドウ オブジェクトを構築します。 Create を呼び出す前に、グローバル関数 AfxRegisterWndClass でウィンドウ クラスを登録すると、フレームのアイコンやクラス スタイルを設定できます。

フレーム作成用のパラメーターとして即値を渡すときは、Create メンバー関数を使用します。

LoadFrame で使う引数は Create よりも少なく、その代わりにフレームのタイトル、アイコン、アクセラレータ テーブル、メニューなどのリソースから、既定の値の大部分を補います。 LoadFrame がアクセスできるように、これらのリソースすべてに同じリソース ID (たとえば、IDR_MAINFRAME) を付ける必要があります。

CMDIChildWnd オブジェクトがビューやドキュメントを持っていれば、プログラマが直接作成する代わりに、フレームワークが間接的に作成します。 CDocTemplate オブジェクトが、フレームの作成、それに含まれるビューの作成、および適切なドキュメントとビューの関連付けを調整します。 CDocTemplate のコンストラクターのパラメーターには、関連する 3 つのクラス (ドキュメント、フレーム、ビュー) の CRuntimeClass を指定します。 フレームワークは CRuntimeClass オブジェクトを使って、ユーザーが指定した新しいフレームを動的に作成します。ユーザーは、[ファイル] メニューの [新規作成]、または MDI (マルチ ドキュメント インターフェイス) の [ウィンドウ] メニューの [新しいウィンドウを開く] などで指定します。

上の RUNTIME_CLASS 機構を正しく動作させるには、CMDIChildWnd から派生したフレーム ウィンドウ クラスに、DECLARE_DYNCREATE を指定して宣言する必要があります。

CMDIChildWnd クラスは、CFrameWnd から既定の実装の大部分を継承します。 これらの機能の詳細については、「CFrameWnd クラス」クラスの説明を参照してください。 CMDIChildWnd クラスには、継承する機能以外に、次に示す機能があります。

  • CMultiDocTemplate クラスと関連して、同じドキュメント テンプレートから作成された複数の CMDIChildWnd オブジェクトは、Windows のシステム リソースを節約するために、同じメニューを共有します。

  • 現在アクティブな MDI 子ウィンドウのメニュー全体が MDI フレーム ウィンドウのメニューと置き換えられ、現在アクティブな MDI 子ウィンドウのキャプションが MDI フレーム ウィンドウのキャプションに追加されます。 MDI フレーム ウィンドウと関連して実装された MDI 子ウィンドウの関数の例については、CMDIFrameWnd クラスの説明を参照してください。

C++ の delete 演算子でフレーム ウィンドウを破棄しないでください。 代わりに、CWnd::DestroyWindow を使用してください。 CFrameWnd での PostNcDestroy の実装では、ウィンドウが破棄されるときに C++ オブジェクトが削除されます。 フレーム ウィンドウを閉じるとき、既定の OnClose ハンドラーは、DestroyWindow を呼び出します。

CMDIChildWnd の詳細については、「フレーム ウィンドウ」を参照してください。

必要条件

**ヘッダー:**afxwin.h

参照

処理手順

MDI のサンプル:MDI ドキュメント/ビュー アーキテクチャを使用せずに示します

MDIDOCVW サンプル:ドキュメント/ビュー アーキテクチャを使用して MDI を示します

SNAPVW サンプル:フォーム ビュー] アプリケーションをでプロパティ ページを使用します。

参照

CFrameWnd クラス

階層図

CWnd クラス

CMDIFrameWnd クラス

その他の技術情報

CMDIChildWnd のメンバー