MFC オブジェクト間のリレーションシップ

注

Microsoft Foundation Classes (MFC) ライブラリは引き続きサポートされています。 ただし、機能の追加やドキュメントの更新は行われません。

ドキュメント/ビュー作成プロセスをパースペクティブに配置するには、実行中のプログラム (ドキュメント、ビューを含めるために使用されるフレーム ウィンドウ、およびドキュメントに関連付けられたビュー) を検討してください。

  • ドキュメントには、そのドキュメントのビューの一覧と、ドキュメントを作成したドキュメント テンプレートへのポインターが保持されます。

  • ビューにはそのドキュメントへのポインターが保持されており、親フレーム ウィンドウの子です。

  • ドキュメント フレーム ウィンドウは、現在アクティブなビューへのポインターを保持します。

  • ドキュメント テンプレートは、開いているドキュメントの一覧を保持します。

  • アプリケーションはドキュメント テンプレートの一覧を保持します。

  • Windows は、開いているすべてのウィンドウを追跡して、メッセージを送信できるようにします。

これらのリレーションシップは、ドキュメント/ビューの作成時に確立されます。 次の表は、実行中のプログラム内のオブジェクトが他のオブジェクトにアクセスする方法を示しています。 任意のオブジェクトは、グローバル関数 AfxGetApp を呼び出すことによって、アプリケーション オブジェクトへのポインターを取得できます。

アプリケーション内の他のオブジェクトにアクセスする

オブジェクトから 他のオブジェクトにアクセスする方法
ドキュメント GetFirstViewPosition と GetNextView を使用して、ドキュメントのビュー リストにアクセスします。

GetDocTemplate を呼び出して、ドキュメント テンプレートを取得します。
表示 GetDocument を呼び出してドキュメントを取得します。

GetParentFrame を呼び出してフレーム ウィンドウを取得します。
ドキュメント フレーム ウィンドウ GetActiveView を呼び出して現在のビューを取得します。

GetActiveDocument を呼び出して、現在のビューに添付されたドキュメントを取得します。
MDI フレーム ウィンドウ MDIGetActive を呼び出して、現在アクティブな CMDIChildWnd を取得します。

通常、フレーム ウィンドウには 1 つのビューがありますが、分割ウィンドウのように、同じフレーム ウィンドウに複数のビューが含まれている場合があります。 フレーム ウィンドウは、現在アクティブなビューへのポインターを保持します。ポインターは、別のビューがアクティブ化されるたびに更新されます。

注

メイン フレーム ウィンドウへのポインターは、アプリケーション オブジェクトの m_pMainWnd メンバー変数に格納されます。 OnFileNew の InitInstance メンバー関数のオーバーライドで CWinApp を呼び出すと、m_pMainWnd が設定されます。 OnFileNewを呼び出さない場合は、自分で変数の値InitInstance設定する必要があります。 (/Embedding がコマンド ラインにある場合、SDI COM コンポーネント (サーバー) アプリケーションで変数が設定されない場合があります)。 m_pMainWndは、CWinThreadではなくクラス CWinAppのメンバーになりました。

こちらも参照ください

ドキュメント テンプレートとドキュメント/ビュー作成プロセス
ドキュメント テンプレートの作成
ドキュメント/ビューの作成
新しいドキュメント、Windows、ビューの作成