CCreateContext 構造体
更新 : 2007 年 11 月
フレームワークは CCreateContext 構造体を使って、ドキュメントに関連付けるフレーム ウィンドウとビューを作成します。
struct CCreateContext
解説
CCreateContext は構造体で、基本クラスはありません。
ウィンドウを作成すると、この構造体の値に基づきドキュメントを構成するコンポーネントとそのデータのビューが接続されます。CCreateContext 構造体は、作成処理を部分的にオーバーライドするとき以外は必要ありません。
CCreateContext 構造体の内容は、ドキュメント、フレーム ウィンドウ、ビュー、ドキュメント テンプレートのポインタです。作成するビューのタイプを示す CRuntimeClass のポインタもあります。実行時のクラスの情報と現在のドキュメントへのポインタを使って、動的に新しいビューを作成できます。次の表に、CCreateContext 構造体の各メンバがいつ、どのように使われるかを示します。
メンバ |
用途 |
---|---|
m_pNewViewClass |
作成する新しいビューの CRuntimeClass |
m_pCurrentDoc |
新しいビューに関連付ける既存のドキュメント |
m_pNewDocTemplate |
新しい MDI フレーム ウィンドウの作成時に関連付けるドキュメント テンプレート |
m_pLastView |
分割ウィンドウのビュー、またはドキュメントの別のビューを作成するときに、追加されるビューの原型となるビュー |
m_pCurrentFrame |
ドキュメントの別のフレーム ウィンドウを作成するときに、追加されるフレーム ウィンドウの原型となるフレーム ウィンドウ |
ドキュメント テンプレートによってドキュメントとその関連コンポーネントを作成すると、CCreateContext 構造体に格納されている情報が有効になります。したがって、存在しないドキュメントからビューが作成されることはありません。
メモ : |
---|
CCreateContext 構造体のすべてのポインタはオプションであり、指定されていない場合や未知の場合には、NULL になります。 |
CCreateContext 構造体は、"参照" に挙げたメンバ関数で使用されます。これらの関数をオーバーライドするときの詳細については、それぞれの関数の説明を参照してください。
一般的なガイドラインは次のとおりです。
CWnd::Create、CFrameWnd::Create、CFrameWnd::LoadFrame などのウィンドウ作成関数に引数として渡すと、作成コンテキストは新しいウィンドウの接続先を示します。大部分のウィンドウでは構造体全体の指定を省略できます。この場合は、NULL ポインタを渡します。
CFrameWnd::OnCreateClient のようなオーバライドできるメンバ関数では、CCreateContext 引数を省略できます。
ビューを作成するメンバ関数に対して、ビューの作成に必要な情報を与えてください。たとえば、分割ウィンドウの最初のビューでは、ビューのクラス情報と現在のドキュメントを与えます。
通常、既定のフレームワークを使うときは、CCreateContext を無視できます。より高度な修正を行うときには、Microsoft Foundation Class ライブラリのソース コード、または、VIEWEX のようなサンプル プログラムが参考になります。必要なパラメータを指定し忘れると、フレームワークのアサーションによって不足パラメータが通知されます。
CCreateContext の詳細については、「MFC サンプル」の「VIEWEX」を参照してください。
必要条件
ヘッダー : afxext.h