|
一.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);
}
|
|