各種 MFC オブジェクト間の関係
役立ちます。は観点にドキュメント/ビューの作成プロセスを使用して実行中のプログラムを入れます: ドキュメント、ビューの格納に使用されたフレーム ウィンドウとビューはドキュメントに関連付けられています。
ドキュメントは文書を作成したドキュメント テンプレートにそのドキュメントおよびポインターのビューの一覧です。
ビューはドキュメントへのポインターを保持し、親フレーム ウィンドウの子です。
ドキュメント フレーム ウィンドウには、現在のアクティブなビューにポインターを保持します。
ドキュメント テンプレートは、開いているドキュメントのリストを保持します。
アプリケーションでは、ドキュメント テンプレートの一覧です。
ウィンドウは、すべての開いているウィンドウを追跡します。これは、にメッセージを送信できます。
これらの関係は、ドキュメント/ビューの作成時に設定されます。実行中のプログラムのオブジェクトが他のオブジェクトにアクセスする方法を次の表に示します。どのオブジェクトがアプリケーション オブジェクトに AfxGetAppグローバル関数を呼び出してポインターを取得できます。
アプリケーションの他のオブジェクトにアクセスする方法
オブジェクトから |
他のオブジェクトにアクセスする方法 |
---|---|
Document |
ドキュメント ビューの一覧にアクセスするために GetFirstViewPosition と GetNextView を使用します。 ドキュメント テンプレートを取得する呼び出し GetDocTemplate 。 |
ビュー |
ドキュメントを取得する呼び出し GetDocument 。 フレーム ウィンドウを取得する呼び出し GetParentFrame 。 |
ドキュメント フレーム ウィンドウ |
現在のビューを取得する呼び出し GetActiveView 。 ドキュメントを現在のビューに接続するために GetActiveDocument を呼び出します。 |
MDI フレーム ウィンドウ |
現在アクティブな CMDIChildWndを取得する呼び出し MDIGetActive 。 |
通常、フレーム ウィンドウに 1 個のビューがありますが、場合によっては、分割ウィンドウと同様に、同じフレーム ウィンドウは、複数のビューが表示されます。フレーム ウィンドウは、現在アクティブなビューへのポインターを保持します; ポインターは別のビューがアクティブになる更新されます。
[!メモ]
メイン フレーム ウィンドウへのポインターがアプリケーション オブジェクトの m_pMainWnd のメンバー変数に格納されます。CWinApp の InitInstance のメンバー関数をオーバーライド OnFileNew の呼び出しは、の m_pMainWnd を設定します。OnFileNewをダイヤルする、自分 InitInstance 変数の値を設定します。SDI の COM コンポーネント (サーバー)アプリケーションで /Embedding がコマンド ラインにある変数を設定しない場合もあります)。これで、 m_pMainWnd が CWinAppではなく、クラス CWinThread のメンバーであることに注意してください。