|
一.CView調(diào)用CDocument成員:
調(diào)用CView類(lèi)自帶的CDocument類(lèi)接口:CMy22Doc* CMy22View::GetDocument() const
在調(diào)用函數(shù)寫(xiě) CMy22Doc* p11=GetDocument() ;便取得了GetDocument類(lèi)的指針。便可以通過(guò)p11調(diào)用GetDocument成員。
二.其他類(lèi)調(diào)用CView類(lèi)的成員:
編譯器沒(méi)有在其他類(lèi)自定義CView接口,需要自己寫(xiě):
POSITION pos=GetFirstViewPosition();//獲取第一個(gè)視圖類(lèi)的位置
CView *pview=GetNextView(pos);//給第一個(gè)視圖類(lèi)分配內(nèi)存。注:若有兩個(gè)視圖類(lèi)需要在寫(xiě)一遍pview=GetNextView(pos);給第二個(gè)分配內(nèi)存
CMyView*p22=(CMyView*)pview; //指針的強(qiáng)制轉(zhuǎn)換,轉(zhuǎn)換成自定義的CView類(lèi)型可以通過(guò)p22調(diào)用CView成員了……
三.app類(lèi)的類(lèi)外接口(格式固定):
CWinApp*p44=AfxGet App();//第一步:獲取App類(lèi)指針
CMyApp*p55=(CMyApp*)p44; //第二步:強(qiáng)制轉(zhuǎn)換成自定義的App指針,完成!
四.CMainFrame的類(lèi)外接口:
利用第三條(三.apphet App();//第一步:獲取App類(lèi)指針)的第一步獲取App指針p44,再用p44調(diào)用其m_pMainWnd方法,CWnd*p55=p44->m_pMainWnd;并到公共父類(lèi)CWnd*p55中。此時(shí)就可以用p55調(diào)用CMainFrame的方法了。。。。。。。。。
可以認(rèn)為CMainFeame的地址存在App中。
后三條的步驟可以概括為:獲取指針并存到通用指針,把通用指針轉(zhuǎn)換成自定義指針。
////////////////////////////////// 總結(jié) /////////////////////////////////////
void CMy0315Doc::OnTt()
{
// TODO: 在此添加命令處理程序代碼
//CView類(lèi)的接口
POSITION pos=GetFirstViewPosition();
CView*view=GetNextView(pos);
CMy0315View*p11=(CMy0315View*)view;
AfxMessageBox( p11->aa);
//APP類(lèi)的接口
CWinApp*p2=AfxGetApp();
CMy0315App*p22=(CMy0315App*)p2;
AfxMessageBox(p22->zz);
//框架類(lèi)的入口
CWnd*p33=p2->m_pMainWnd;//主場(chǎng)口對(duì)象(即CMainframe)的獲取
CMainFrame*p44=(CMainFrame*)p33;
AfxMessageBox( p44->xx);
}
|
|