CCreateContext 结构

框架在创建与文档关联的框架窗口和视图时使用 CCreateContext 结构。

语法

struct CCreateContext

备注

CCreateContext 是一个结构,没有基类。

创建窗口时,此结构中的值提供用于将文档组件连接到其数据视图的信息。 仅当重写部分创建过程时才需使用 CCreateContext

CCreateContext 结构包含指向文档、框架窗口、视图和文档模板的指针。 它还包含指向 CRuntimeClass(用于标识要创建的视图类型)的指针。 运行时类信息和当前文档指针用于动态创建新视图。 下表提供如何以及何时使用每个 CCreateContext 成员的建议:

成员 类型 用途
m_pNewViewClass CRuntimeClass* 要创建的新视图的 CRuntimeClass
m_pCurrentDoc CDocument* 要与新视图关联的现有文档。
m_pNewDocTemplate CDocTemplate* 与创建新 MDI 框架窗口关联的文档模板。
m_pLastView CView* 用于对其他视图进行建模的原始视图,如创建拆分器窗口视图或在文档中创建第二个视图。
m_pCurrentFrame CFrameWnd* 用于对其他框架窗口进行建模的框架窗口,如在文档中创建第二个框架窗口。

当文档模板创建文档及其关联的组件时,它会验证 CCreateContext 结构中存储的信息。 例如,不应为不存在的文档创建视图。

注意

CCreateContext 中的所有指针都是可选的,并且可以是 NULL(如果未指定或未知)。

CCreateContext 由“另请参阅”下列出的成员函数使用。如果计划重写这些函数,请参阅这些函数的说明以了解具体信息。

下面是一些通用准则:

  • 当为了创建窗口将创建上下文作为参数进行传递(如在 CWnd::CreateCFrameWnd::CreateCFrameWnd::LoadFrame 中)时,创建上下文指定新窗口应连接的目标。 对于大多数窗口,整个结构是可选的,并且可以传递 NULL 指针。

  • 对于可重写的成员函数,例如 CFrameWnd::OnCreateClientCCreateContext 参数是可选的。

  • 对于创建视图时涉及的成员函数,必须提供足够的信息来创建视图。 例如,对于拆分器窗口中的第一个视图,必须提供视图类信息和当前文档。

一般情况下,如果使用框架默认值,则可以忽略 CCreateContext。 如果尝试进行更高级的修改,Microsoft 基础类库源代码或示例程序(如 VIEWEX)将提供指导。 如果确实忘记了所需的参数,框架断言可提供你忘记的内容。

有关 CCreateContext 的详细信息,请参阅 MFC 示例 VIEWEX

要求

标头:afxext.h

另请参阅

层次结构图
CFrameWnd::Create
CFrameWnd::LoadFrame
CFrameWnd::OnCreateClient
CSplitterWnd::Create
CSplitterWnd::CreateView
CWnd::Create