CApp,CMainFrame,CDoc,CView

來源:互聯網
上載者:User

想寫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。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.