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