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