//全局函数AfxGetApp可以得到CWinApp应用类指针
//AfxGetApp()->m_pMainWnd为框架窗口指针
//在框架窗口中:CFrameWnd::GetActiveDocument得到当前活动文档指针
//在框架窗口中:CFrameWnd::GetActiveView得到当前活动视图指针
//在视图中:CView::GetDocument得到对应的文档指针
//在文档中:CDocument::GetFirstViewPosition,CDocument::GetNextView用来遍历所有和文档关联的视。
//在文档中:CDocument::GetDocTemplate得到文档模板指针
//在多文档界面中:CMDIFrameWnd::MDIGetActive得到当前活动的MDI子窗口
//用以下语句:
CMainFrame *pFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd);
//就可以获得CMainFrame的自定义成员了。
//注意,不能用AfxGetApp()->GetMainWnd()或AfxGetMainWnd(),他们只能获得CMainFrame父类的指针,而且可能是一个临时对象的指针,即使用CMainFrame*强制返回结果,也访问获取在CMainFrame中自定义的成员。
//顺便问一下,为什么不用MFC的Document/View框架,把一些属性定义在Document中,
//这样在view中访问则易如反掌。(用CView::GetDocument())。
//AfxGetApp()->m_pMainWnd为框架窗口指针
//在框架窗口中:CFrameWnd::GetActiveDocument得到当前活动文档指针
//在框架窗口中:CFrameWnd::GetActiveView得到当前活动视图指针
//在视图中:CView::GetDocument得到对应的文档指针
//在文档中:CDocument::GetFirstViewPosition,CDocument::GetNextView用来遍历所有和文档关联的视。
//在文档中:CDocument::GetDocTemplate得到文档模板指针
//在多文档界面中:CMDIFrameWnd::MDIGetActive得到当前活动的MDI子窗口
//用以下语句:
CMainFrame *pFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd);
//就可以获得CMainFrame的自定义成员了。
//注意,不能用AfxGetApp()->GetMainWnd()或AfxGetMainWnd(),他们只能获得CMainFrame父类的指针,而且可能是一个临时对象的指针,即使用CMainFrame*强制返回结果,也访问获取在CMainFrame中自定义的成员。
//顺便问一下,为什么不用MFC的Document/View框架,把一些属性定义在Document中,
//这样在view中访问则易如反掌。(用CView::GetDocument())。
本文介绍了MFC应用程序中各个核心组件之间的关联方式,包括如何通过全局函数AfxGetApp获取CWinApp应用类指针,以及如何从不同层级的对象中获取当前活动的文档、视图和其他相关对象的指针。
2731

被折叠的 条评论
为什么被折叠?



