標題: VC++:單文檔程序中編譯器自定義四個類的類外接口 [打印本頁]

作者: 51黑fan    時間: 2016-1-31 02:55
標題: VC++:單文檔程序中編譯器自定義四個類的類外接口
一.CView調用CDocument成員:
調用CView類自帶的CDocument類接口:CMy22Doc* CMy22View::GetDocument() const
在調用函數(shù)寫 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);
       
}







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1