初识文档视图结构

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();

  这两句,将视图类保存在文档类的视图链表中(所以文档类可以有很多视图类)   

posted @ 2017-08-26 12:24  _xiaohaige  阅读(250)  评论(0编辑  收藏  举报