CMDIFrameWnd クラス

更新 : 2007 年 11 月

Windows のマルチ ドキュメント インターフェイス (MDI: Multiple Document Interface) のフレーム ウィンドウの機能が用意されています。さらに、ウィンドウを管理するメンバも用意されています。

class CMDIFrameWnd : public CFrameWnd

解説

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

CFrameWndCreate メンバ関数または LoadFrame メンバ関数を呼び出して、MDI フレーム ウィンドウを構築できます。

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

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

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

MDIFrameWnd クラスは CFrameWnd から派生したクラスですが、その CMDIFrameWnd から派生したフレーム ウィンドウ クラスでは、DECLARE_DYNCREATE を使って宣言する必要はありません。

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

  • MDI フレーム ウィンドウは、MDICLIENT ウィンドウを管理し、コントロール バーと一緒に MDICLIENT ウィンドウを再配置します。MDI クライアント ウィンドウは MDI 子フレーム ウィンドウの直接の親ウィンドウです。CMDIFrameWndWS_HSCROLL ウィンドウ スタイルと WS_VSCROLL ウィンドウ スタイルを指定すると、そのスタイルは、メイン フレーム ウィンドウではなく、MDI クライアント ウィンドウに対して有効になり、(Windows のプログラム マネージャのように) MDI クライアント領域をスクロールできます。

  • MDI フレーム ウィンドウは、アクティブな MDI 子ウィンドウがないときに、メニュー バーとして使う既定のメニューを所有しています。MDI 子ウィンドウがアクティブになると、MDI フレーム ウィンドウのメニュー バーは自動的に、MDI 子ウィンドウのメニューに置き換わります。

  • MDI フレーム ウィンドウは、現在アクティブな MDI 子ウィンドウがあれば、それと連携して動作します。たとえば、コマンド メッセージは、MDI フレーム ウィンドウよりも前に、現在アクティブな MDI 子ウィンドウに送られます。

  • MDI フレーム ウィンドウは、次に示す標準の Window のメニュー コマンドに対応する既定のハンドラを持っています。

    • ID_WINDOW_TILE_VERT

    • ID_WINDOW_TILE_HORZ

    • ID_WINDOW_CASCADE

    • ID_WINDOW_ARRANGE

  • MDI フレーム ウィンドウには、ID_WINDOW_NEW の実装も用意されています。これによって、現在のドキュメント上に新しいフレームとビューを作成できます。アプリケーションは、MDI ウィンドウの処理をカスタマイズするために、これらの既定のコマンド実装をオーバーライドできます。

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

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

必要条件

ヘッダー : afxwin.h

スマート デバイス開発者のためのメモ

このクラスは、スマート デバイス プロジェクトではサポートされません。

参照

処理手順

MDI サンプル : ドキュメント/ビュー アーキテクチャを使用しない MDI

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

SNAPVW サンプル : フォーム ビュー アプリケーションでのプロパティ ページの使用

参照

CFrameWnd クラス

階層図

CWnd クラス

CMDIChildWnd クラス

その他の技術情報

CMDIFrameWnd のメンバ