CMDIFrameWnd クラス
更新 : 2007 年 11 月
Windows のマルチ ドキュメント インターフェイス (MDI: Multiple Document Interface) のフレーム ウィンドウの機能が用意されています。さらに、ウィンドウを管理するメンバも用意されています。
class CMDIFrameWnd : public CFrameWnd
解説
アプリケーションで有用な MDI フレーム ウィンドウを作るには、CMDIFrameWnd からクラスを派生します。アプリケーション固有のデータを格納するには、この派生クラスにメンバ変数を加えます。ウィンドウにメッセージが送られたときに行われる処理を指定するには、派生クラスにメッセージ処理メンバ関数とメッセージ マップを実装します。
CFrameWnd の Create メンバ関数または 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 子フレーム ウィンドウの直接の親ウィンドウです。CMDIFrameWnd に WS_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 サンプル : フォーム ビュー アプリケーションでのプロパティ ページの使用