ドキュメント フレーム ウィンドウの作成
更新 : 2007 年 11 月
「ドキュメントおよびビューの作成」で説明したように、CDocTemplate は、フレーム ウィンドウ、ドキュメント、およびビューの作成と相互に結び付ける作業を調整します。CDocTemplate コンストラクタの 3 つの CRuntimeClass 型引数によって、ユーザー コマンド ([ファイル] メニューの [新規作成] コマンドや MDI アプリケーションの [ウィンドウ] メニューの [新規ウィンドウ] コマンドなど) に対する動作として、ドキュメント テンプレートが動的に作成するフレーム ウィンドウ、ドキュメント、およびビューのクラスを指定します。ドキュメント テンプレートはこの情報を格納し、ビューおよびドキュメントのフレーム ウィンドウを作成するときに使用します。
RUNTIME_CLASS 機構を適切に機能させるためには、派生したフレーム ウィンドウ クラスを DECLARE_DYNCREATE マクロと共に宣言する必要があります。フレームワークでは、CObject クラスの動的生成機構を使用してドキュメント フレーム ウィンドウを作成する必要があるためです。
ユーザーがドキュメントを作成するコマンドを選択すると、フレームワークは、ドキュメント テンプレートを呼び出して、ドキュメントのオブジェクトとそのビュー、およびビューを表示するフレーム ウィンドウを作成します。ドキュメント フレーム ウィンドウを作成するとき、ドキュメント テンプレートは、該当するクラスのオブジェクトを作成します。つまり、SDI アプリケーションでは CFrameWnd から派生したクラスのオブジェクトを作成し、MDI アプリケーションでは CMDIChildWnd から派生したクラスのオブジェクトを作成します。次に、フレームワークはフレーム ウィンドウ オブジェクトの LoadFrame メンバ関数を呼び出し、リソースから作成情報を取得して Windows のウィンドウを作成します。フレームワークは、ウィンドウのハンドルをフレーム ウィンドウ オブジェクトに結び付けます。その後、ドキュメント フレーム ウィンドウの子ウィンドウとしてビューを作成します。
CWnd から派生オブジェクトを初期化するタイミングには注意してください。