フレームワークと記述したコードとの関係
ソース コードと MFC フレームワークのコードの関係を理解することは、非常に重要です。 アプリケーションの実行時には、ほとんどの制御フローがフレームワークのコード内にあります。 フレームワークは、ユーザーがコマンドを選択してビュー内のデータを編集するときに、Windows からメッセージを取得するメッセージ ループを管理します。 フレームワーク自体が処理できるイベントは、プログラマのコードにはまったく依存しません。 たとえば、フレームワークは、ユーザーのコマンドに応じてウィンドウを閉じる方法とアプリケーションを終了する方法を知っています。 フレームワークは、これらのタスクを処理するときに、メッセージ ハンドラーと C++ 仮想関数を使用して、プログラマにもこれらのイベントに応答できる機会を提供します。 ただし、制御内にあるのはプログラマのコードではなく、フレームワークです。
フレームワークは、アプリケーション固有のイベントのために、プログラマのコードを呼び出します。 たとえば、ユーザーがメニュー コマンドを選択すると、フレームワークは C++ オブジェクトのシーケンスに沿ってコマンドをルーティングします。そのシーケンスは、現在のビューとフレーム ウィンドウ、ビューに関連付けられているドキュメント、ドキュメントのドキュメント テンプレート、およびアプリケーション オブジェクトです。 これらのいずれかのオブジェクトがコマンドを処理できる場合は、適切なメッセージ ハンドラー関数を呼び出して、処理します。 どのコマンドでも、呼び出されるコードは、プログラマのコードである場合もあれば、フレームワークのコードである場合もあります。
このしくみは、Windows の従来のプログラミングまたはイベントドリブン プログラミングの経験があるプログラマにとっては、ある程度なじみ深いものです。
関連するいくつかのトピックでは、フレームワークがアプリケーションを初期化して実行し、アプリケーションの終了時にはクリーンアップするときに、フレームワークによってどのような操作が行われるかについて説明します。 自分の記述したコードがどこに位置するかも理解できるでしょう。
詳細については、「CWinApp: アプリケーション クラス」と「ドキュメント テンプレートとドキュメント/ビューの作成手順」を参照してください。