1、WinApp:管理应用程序
2、CFrameWnd:管理程序的框架窗口
3、CView:管理程序的视图
4、CDocument:管理程序的数据
5、CWinApp* AFXAPI AfxGetApp();在程序的任何地方,调用这个函数,都可以获得CWinApp类的指针。
6、任何时候通过AfxGetApp()函数,都可以获得WinApp类。
7、CFrameWnd类,可以通过GetActiveView()获得当前活动视图类。
8、CView类,可以通过GetDocument()函数获得,与视图类关联的唯一视图类。
9、CDocument类,可以通过两个函数:GetFirstViewPosition()函数和GetNextView(ps),获得文档类对应的视图类(一个文档类可以对应很多视图类)
10、CView和CDocument类如何获得CFrameWnd类:可以先获得WinApp类(通过AfxGetApp())
在CWinApp类中,有一个成员变量:m_pMainWnd,记录了CFrameWnd类。
11、总结:只要知道这四个类中的任何一个类,就可以获得其他类。
12、SetActiveView(pViewNew);如何将视图类和框架窗口类联系起来的。
m_pViewActive = pViewNew;
在CFrameWnd类中,有一个成员变量,m_pViewActive,记录了当前的激活视图,这样CFrameWnd就记住了当前的激活视图。
13、所以SetActiveView(pViewNew);可以用m_pViewActive = pViewNew;来替代。效果是一样的。
14、pDoc->AddView(pView);如何将文档类和视图类连接起来的:
pView->m_pDocument = this;这句将文档类,记录在视图类的m_pDocument,所以视图类可以找到对应的文档类。
m_ViewList.AddTail(pView);
OnChangeList();
这两句,将视图类保存在文档类的视图链表中(所以文档类可以有很多视图类)