Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1349821
  • 博文数量: 118
  • 博客积分: 3888
  • 博客等级: 中校
  • 技术积分: 2940
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-10 18:15
个人简介

一看二做三总结

文章分类

全部博文(118)

分类:

2007-04-30 20:38:25

    vc++6.0中的文档、视图、框架与应用程序类之间只有部分可以直接调用,其他都是通过间接调用实现的。下边用一个MFC直接生成的单文档程序My为例。四个类分别问CMyApp、CMyDoc、CMainFrame、CMyView。
 
一、AfxGetApp()与AfxGetMainWnd()
    theApp是程序的起点,在程序的任何地方都可以通过AfxGetApp()函数获得该指针。它返回的对象是CWinapp类的指针,因此必须转型为自己生成的应用程序的指针。
    AfxGetMainWnd()函数用来获得框架的指针,该函数的返回对象是CWinThread类的指针,因此也必须转型为用户程序框架类的指针。
    在应用程序类中,也可以通过m_pMainWnd指针获得指向框架的指针,其实AfxGetMainWnd()函数就是返回的该变量。

   CMySApp *myApp = (CMyApp*)AfxGetApp();
   CMainFrame *myFram = (CMainFrame*)AfxGetMainWnd();

   CMainFrame *myFram = (CMainFrame*)(myApp->m_pMainWnd);

二、通过框架获得其他各项的指针

    要注意这些指针都必须通过转型。

    CMyView *myView = (CMyView*)GetActiveView();
    CMyDoc *myDoc = (CMyDoc*)GetActiveDocument();
    CMyApp *myApp = (CMyApp*)AfxGetApp();

三、视图中获得文档的指针

CMyDoc *myDoc = GetDocument();

    视图中获得文档的指针是不需要转型的,因为一旦产生了视图,其对应的文档的类型就是确定的了,而且也是唯一确定的

四、其他情况

   对于其他情况,可以利用第一种情况下的两个函数来获得框架的指针,然后就可以根据第二种情况获得其他所有类的指针。

阅读(2604) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~