MFC类指针获取与应用详解

需积分: 9 3 下载量 47 浏览量 更新于2024-09-15 收藏 37KB DOC 举报
"这篇文档详细介绍了在VC++的MFC(Microsoft Foundation Classes)框架中如何获取和应用不同类别的指针。重点在于理解和使用CWinApp、CMainFrame、CChildFrame、CDocument以及CView类的指针,以便在MFC程序中有效地管理窗口和视图对象。" 在MFC中,CWinApp类是每个应用程序的核心,它代表了程序的主线程。CWinApp类有一个重要的成员变量`m_pMainWnd`,它存储了应用程序的主窗口的指针。对于SDI(Single Document Interface)应用,通常在`InitInstance`函数中直接设置`m_pMainWnd`;而对于MDI(Multiple Document Interface)应用,这个过程发生在`ProcessShellCommand`函数内部。因此,无论哪种类型的应用,都需要确保`m_pMainWnd`被正确地初始化,指向主框架窗口。 获取CWinApp类的指针可以通过全局函数`AfxGetApp()`,它返回当前运行的CWinApp实例的指针。`m_pMainWnd`是CWinApp的一个成员,可以直接访问以获取主窗口的指针。 获取CMainFrame(主框架窗口)的指针有多种方法。在CWinApp中,可以使用`AfxGetMainWnd()->MDIGetActive()`或`AfxGetMainWnd()->GetActiveFrame()`。在CMainFrame类中,`AfxGetApp()`或`theApp`(CWinApp的实例别名)可用于获取CWinApp指针,然后调用`MDIGetActive()`或`GetActiveFrame()`。 对于CChildFrame(子框架窗口),同样可以通过`AfxGetApp()`或`theApp`获取CWinApp指针,然后使用`GetParentFrame()`来获取其父框架,即CMainFrame的指针。若需访问文档,可以调用`GetActiveView()->GetDocument()`。 CDocument类代表文档,它的指针获取可以通过`AfxGetApp()`或`theApp`获取CWinApp,再利用`AfxGetMainWnd()`,在MDI环境中通过`MDIGetActive()`和`GetActiveView()->GetDocument()`链式调用来获取当前活动文档。在SDI环境中,可以直接使用`GetActiveView()->GetDocument()`。 CView类是视图的基类,用于显示文档内容。获取CView指针的方法包括`AfxGetApp()`或`theApp`,之后可以通过`GetActiveView()`来获取当前活动视图。如果需要遍历所有的视图,可以使用`POSITION pos = GetFirstViewPosition();`和`GetNextView(pos)`的组合。 总结来说,MFC中获取不同类别的指针是通过一系列特定的成员函数和全局辅助函数完成的,这使得开发者能够灵活地在应用程序的不同部分之间导航和操作对象。正确使用这些指针是构建功能完备的MFC应用的关键。