次の方法で共有


CMDIChildWnd クラス

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

class CMDIChildWnd : public CFrameWnd

メンバー

パブリック コンストラクター

名前

説明

CMDIChildWnd::CMDIChildWnd

CMDIChildWnd オブジェクトを構築します。

パブリック メソッド

名前

説明

CMDIChildWnd::Create

CMDIChildWnd のオブジェクトに関連付けられた Windows の MDI 子ウィンドウを作成します。

CMDIChildWnd::GetMDIFrame

MDI クライアント ウィンドウの親 MDI フレームを返します。

CMDIChildWnd::MDIActivate

この MDI 子ウィンドウをアクティブにします。

CMDIChildWnd::MDIDestroy

この MDI 子ウィンドウを破棄します。

CMDIChildWnd::MDIMaximize

この MDI 子ウィンドウを最大化します。

CMDIChildWnd::MDIRestore

最大化または最小化されたサイズからこの MDI 子ウィンドウを復元します。

CMDIChildWnd::SetHandle

メニュー、アクセラレータのリソースのハンドルを設定します。

解説

MDI 子ウィンドウは一般的なフレーム ウィンドウによく似ていますが、MDI 子ウィンドウはデスクトップのではなく、MDI フレーム ウィンドウ内に表示されます。 MDI 子ウィンドウには独自のメニュー バーがありませんが、代わりに MDI フレーム ウィンドウのメニューを共有します。 フレームワークは、自動的に現在アクティブな MDI 子ウィンドウを表すために、MDI フレーム メニューを変更します。

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

MDI 子ウィンドウを構築する方法の 3 つがあります:

  • 直接 **[作成]**を使用してそれを構築します。

  • 直接 LoadFrameを使用してそれを構築します。

  • 間接的にドキュメント テンプレートを通じてそのオブジェクトを構築します。

[作成]LoadFrameを呼び出す前に、new C++ の演算子を使用してヒープのフレーム ウィンドウ オブジェクトを構築する必要があります。 [作成] を呼び出す前に、AfxRegisterWndClass のグローバル関数のクラスをフレーム ウィンドウのアイコンおよびクラスのスタイルを設定するには、登録できます。

イミディエイト引数としてフレームの作成のパラメーターを渡すために [作成] のメンバー関数を使用します。

LoadFrame は **[作成]**ほどの引数を必要とし、フレームのキャプション、アイコン、アクセラレータ テーブルとメニューを含むリソースからなく、既定のほとんどを取得します。 LoadFrameにアクセスできるため、これらのリソースはすべて同じリソース id (たとえば、IDR_MAINFRAME) が必要です。

CMDIChildWnd のオブジェクトがビュー、ドキュメントが含まれる場合、これらはプログラマの代わりに、フレームワークによって直接間接的に作成されます。 CDocTemplate のオブジェクトは、フレームの作成、含むビューの作成、適切なドキュメント ビューへの接続を統合します。 CDocTemplate のコンストラクターのパラメーターに含める 3 個のクラスの CRuntimeClass を指定します (ドキュメント、ビュー、およびフレーム)。 ユーザーによって指定されたときに、フレームワークによって CRuntimeClass のオブジェクトが動的に新しいフレームの作成に使用されます (たとえば、ファイルの新しいコマンドまたは MDI ウィンドウの新しいコマンドを使用)。

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

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

  • CMultiDocTemplate のクラスとともに、同じドキュメント テンプレートから CMDIChildWnd の複数のオブジェクトは、Windows のシステム リソースを保存する同じメニューを共有します。

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

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

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

継承階層

CObject

CCmdTarget

CWnd

CFrameWnd

CMDIChildWnd

必要条件

ヘッダー: afxwin.h

参照

関連項目

CFrameWnd クラス

階層図

CWnd クラス

CMDIFrameWnd クラス

概念

MFC MDI サンプル

MFC MDIDOCVW サンプル

MFC SNAPVW サンプル