找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2492|回复: 0
收起左侧

VC++:单文档程序中编译器自定义四个类的类外接口

[复制链接]
ID:104287 发表于 2016-1-31 02:55 | 显示全部楼层 |阅读模式
一.CView调用CDocument成员:
调用CView类自带的CDocument类接口:CMy22Doc* CMy22View::GetDocument() const
在调用函数写 CMy22Doc* p11=GetDocument() ;便取得了GetDocument类的指针。便可以通过p11调用GetDocument成员。
二.其他类调用CView类的成员:
编译器没有在其他类自定义CView接口,需要自己写:
POSITION pos=GetFirstViewPosition();//获取第一个视图类的位置
CView *pview=GetNextView(pos);//给第一个视图类分配内存。注:若有两个视图类需要在写一遍pview=GetNextView(pos);给第二个分配内存
CMyView*p22=(CMyView*)pview; //指针的强制转换,转换成自定义的CView类型可以通过p22调用CView成员了……
三.app类的类外接口(格式固定):
CWinApp*p44=AfxGet App();//第一步:获取App类指针
CMyApp*p55=(CMyApp*)p44; //第二步:强制转换成自定义的App指针,完成!
四.CMainFrame的类外接口:
利用第三条(三.apphet App();//第一步:获取App类指针)的第一步获取App指针p44,再用p44调用其m_pMainWnd方法,CWnd*p55=p44->m_pMainWnd;并到公共父类CWnd*p55中。此时就可以用p55调用CMainFrame的方法了。。。。。。。。。
可以认为CMainFeame的地址存在App中。
后三条的步骤可以概括为:获取指针并存到通用指针,把通用指针转换成自定义指针。


  ////////////////////////////////// 总结  /////////////////////////////////////
void CMy0315Doc::OnTt()
{
        // TODO: 在此添加命令处理程序代码
        //CView类的接口
        POSITION pos=GetFirstViewPosition();
        CView*view=GetNextView(pos);
        CMy0315View*p11=(CMy0315View*)view;
        AfxMessageBox(        p11->aa);
//APP类的接口
        CWinApp*p2=AfxGetApp();
        CMy0315App*p22=(CMy0315App*)p2;
        AfxMessageBox(p22->zz);
//框架类的入口
        CWnd*p33=p2->m_pMainWnd;//主场口对象(即CMainframe)的获取
        CMainFrame*p44=(CMainFrame*)p33;
        AfxMessageBox(        p44->xx);
       
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表