各種 MFC オブジェクト間の関係
ドキュメントおよびビューの作成プロセスをパースペクティブに配置するには、プログラム (ドキュメント、ビューの配置に使用されるフレーム ウィンドウ、ドキュメントに関連付けられたビュー) の実行を検討します。
ドキュメントには、そのドキュメントのビューのリストと、ドキュメントの作成に使用されたドキュメント テンプレートへのポインターが保持されます。
ビューにはそのドキュメントへのポインターが保持されており、親フレーム ウィンドウの子です。
ドキュメント フレーム ウィンドウには、現在のアクティブなビューへのポインターが保持されます。
ドキュメント テンプレートには、開いているドキュメントのリストが保持されます。
アプリケーションには、ドキュメント テンプレートのリストが保持されます。
ウィンドウは、開いているすべてのウィンドウを追跡して、それらにメッセージを送信できるようにします。
これらの関係は、ドキュメントおよびビューの作成時に確立されます。 次の表は、実行中のプログラムのオブジェクトが他のオブジェクトにアクセスする方法を示しています。 オブジェクトはすべて、グローバル関数 AfxGetApp を呼び出すことにより、アプリケーション オブジェクトへのポインターを取得できます。
アプリケーション内の他のオブジェクトに対するアクセスを取得する
元のオブジェクト | 他のオブジェクトにアクセスする方法 |
---|---|
Document | GetFirstViewPosition と GetNextView を使用して、ドキュメントのビューのリストにアクセスします。 GetDocTemplate を呼び出して、ドキュメント テンプレートを取得します。 |
ビュー | GetDocument を呼び出して、ドキュメントを取得します。 GetParentFrame を呼び出して、フレーム ウィンドウを取得します。 |
ドキュメント フレーム ウィンドウ | GetActiveView を呼び出して、現在のビューを取得します。 GetActiveDocument を呼び出して、現在のビューに添付されているドキュメントを取得します。 |
MDI フレーム ウィンドウ | MDIGetActive を呼び出して、現在アクティブな CMDIChildWnd を取得します。 |
通常、フレーム ウィンドウのビューは 1 つですが、場合によっては、分割ウィンドウと同様に、同じフレーム ウィンドウに複数のビューが含まれていることもあります。 フレーム ウィンドウには、現在アクティブなビューへのポインターが保持されます。ポインターは、別のビューがアクティブ化されるたびに更新されます。
Note
メイン フレーム ウィンドウへのポインターは、アプリケーション オブジェクトの m_pMainWnd メンバー変数に格納されます。 CWinApp
の InitInstance
メンバー関数のオーバーライドで OnFileNew
を呼び出すと、m_pMainWnd が設定されます。 OnFileNew
を呼び出さない場合は、変数の値を自分で InitInstance
に設定する必要があります (コマンド ラインで /Embedding が実行されていると、SDI COM コンポーネント (サーバー) アプリケーションで変数を設定することができない場合があります)。 m_pMainWnd がクラス CWinApp
ではなくクラス CWinThread
のメンバーになっていることに注意してください。
関連項目
ドキュメント テンプレートとドキュメントおよびビューの作成手順
ドキュメント テンプレートの作成
ドキュメントおよびビューの作成
新しいドキュメント、ウィンドウ、ビューの作成