MFC 对象之间的关系

为了帮助将文档/视图创建过程放在透视中,请考虑正在运行的程序:文档、用于包含视图的框架窗口以及与文档关联的视图。

  • 文档保留该文档的视图列表,以及指向创建文档的文档模板的指针。

  • 视图保留指向文档的指针,并且是其父框架窗口的子级。

  • 文档框架窗口保留指向其当前活动视图的指针。

  • 文档模板保留其打开的文档的列表。

  • 应用程序保留其文档模板的列表。

  • Windows 会跟踪所有打开的窗口,以便它可以向其发送消息。

这些关系是在创建文档/视图期间建立的。 下表显示了正在运行的程序中的对象如何访问其他对象。 任何对象都可以通过调用全局函数 AfxGetApp 来获取指向应用程序对象的指针。

获取对应用程序中其他对象的访问

From 对象 如何访问其他对象
文档 使用 GetFirstViewPositionGetNextView 访问文档的视图列表。

调用 GetDocTemplate 以获取文档模板。
查看 调用 GetDocument 获取文档。

调用 GetParentFrame 以获取框架窗口。
文档框架窗口 调用 GetActiveView 以获取当前视图。

调用 GetActiveDocument 以获取附加到当前视图的文档。
MDI 框架窗口 调用 MDIGetActive 以获取当前处于活动状态的 CMDIChildWnd

通常,框架窗口有一个视图,但有时,与拆分窗口一样,同一帧窗口包含多个视图。 框架窗口保留指向当前活动视图的指针;每当激活另一个视图时,指针将更新。

注释

指向主框架窗口的指针存储在应用程序对象的 m_pMainWnd 成员变量中。 对OnFileNew集m_pMainWnd的成员函数CWinApp的重写InitInstance中的调用。 如果不调用 OnFileNew,则必须自行设置变量的值 InitInstance 。 (如果 /Embedding 位于命令行上,则 SDI COM 组件(服务器)应用程序可能无法设置变量。 请注意, m_pMainWnd 现在是类 CWinThread 的成员,而不是 CWinApp

另请参阅

文档模板和文档/视图创建过程
文档模板创建
文档/视图创建
创建新文档、Windows 和视图