Posted on 2007-10-17 18:38
天之驕子 閱讀(328)
評論(0) 編輯 收藏 引用
vc++6.0中的文檔、視圖、框架與應(yīng)用程序類之間只有部分可以直接調(diào)用,其他都是通過間接調(diào)用實現(xiàn)的。下邊用一個MFC直接生成的單文檔程序My為例。四個類分別問CMyApp、CMyDoc、CMainFrame、CMyView。
一、AfxGetApp()與AfxGetMainWnd()
theApp是程序的起點,在程序的任何地方都可以通過AfxGetApp()函數(shù)獲得該指針。它返回的對象是CWinapp類的指針,因此必須轉(zhuǎn)型為自己生成的應(yīng)用程序的指針。
AfxGetMainWnd()函數(shù)用來獲得框架的指針,該函數(shù)的返回對象是CWinThread類的指針,因此也必須轉(zhuǎn)型為用戶程序框架類的指針。
在應(yīng)用程序類中,也可以通過m_pMainWnd指針獲得指向框架的指針,其實AfxGetMainWnd()函數(shù)就是返回的該變量。
CMySApp *myApp = (CMyApp*)AfxGetApp(); CMainFrame *myFram = (CMainFrame*)AfxGetMainWnd();
CMainFrame *myFram = (CMainFrame*)(myApp->m_pMainWnd);
|
二、通過框架獲得其他各項的指針
要注意這些指針都必須通過轉(zhuǎn)型。
CMyView *myView = (CMyView*)GetActiveView(); CMyDoc *myDoc = (CMyDoc*)GetActiveDocument(); CMyApp *myApp = (CMyApp*)AfxGetApp();
|
三、視圖中獲得文檔的指針
CMyDoc *myDoc = GetDocument();
|
視圖中獲得文檔的指針是不需要轉(zhuǎn)型的,因為一旦產(chǎn)生了視圖,其對應(yīng)的文檔的類型就是確定的了,而且也是唯一確定的
四、其他情況
對于其他情況,可以利用第一種情況下的兩個函數(shù)來獲得框架的指針,然后就可以根據(jù)第二種情況獲得其他所有類的指針。