次の方法で共有


CMDIFrameWnd クラス

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 のメンバー