想寫VC編程的朋友一定要看孫鑫老師的視頻,裡面講得很好。
網上尋找到的資料總結:
CMainFrame是CApp類的主程式視窗(如果是選MDI或SDI結構的話),也就是程式的一個架構。CApp中如無特殊的要求不用加什麼代碼,CMainFrame中也是根據需要,如按照微軟提供的架構也不需要加什麼代碼。
CDocument一般和CView一起使用,這樣的程式叫文檔/視圖結構。CDocument中加的代碼主要是和你的文檔內容有關的,如文檔中資訊(對象)等,需要處理的一般有文檔內容的編輯、刪除、添加、序列化(讀寫檔案)等方面的代碼。
CView的工作就是把你的CDocument中的內容顯示在文檔上,主要處理的是顯示方面的工作。
AfxGetApp()函數可以得到CApp指標。
CApp->GetMainWnd()函數可以得到CMainFrame指標。
在CDocument或CView中調用的寫法是AfxGetApp()->GetMainWnd()
CMainFrame中可以用GetActiveView()函數得到活動CView的指標。
CView中可以用GetDocument得到CDocument的指標。
MFC程式的來龍去脈:
1.首先是App類的對象.-->AfxWinMain()(編譯器串連的
AfxWinMain()中包括了
-->AfxWinInit()的調用
-->InitApplication()(初始化工作)
-->InitInstance()調用(在CMyWinApp中重載)
-->Run()(進入訊息迴圈)
2.CMainFrame類
MFC靠訊息驅動-->而訊息首先被Frame視窗接收.-->再進入特定的迴圈
3.CDocument類
資料分為:
1.資料體(即資料的處理-->在Doc類中進行)
2.資料的面:(資料的顯示-->在View類中進行)
CApp負責整個應用程式的管理,CDOC類中有一個CAPP的指標,也可以認為應用程式是從CApp開始執行的。
CMainFrame是主視窗架構
CDoc是應用程式資料來源(文檔)主要是用來管理資料,提供儲存和載入資料的功能。有關檔案的讀寫操作在CDoc的Serialize
函數中進行。
CView是應用程式資料顯示(視圖)主要是用來資料顯示,以及給使用者提供對資料的編輯和修改功能。有關資料或圖形的顯示操
作在CView的OnDraw函數中進行。
基本的應用程式就是由這四個類構成的。使用者需要做的就是對這些類執行個體化,以實現所需要的具體功能。
在SDI(單文檔)介面中,菜單響應遵循這樣一個順序:菜單訊息先由CMainFrame類接收,CMainFrame並不直接在內部尋找對應的
相應函數,而是到CView類尋找。如果CView類有該訊息的響應函數,那麼就直接調用CView類中的響應函數,否則,轉到CDoc類尋找,如果CDoc類中存在該訊息的響應函數,那麼就直接調用CDoc類中的響應函數,否則,返回到CMainFrame類尋找。如果CMainFrame類中也沒有,返回到CApp類中尋找。如果在CApp類中也沒有找到,表示沒有該菜單的響應函數。
可以這樣來理解,菜單訊息響應函數的順序是:CView>CDoc>CMainFrame>CApp。