c++本來就已經夠讓人頭痛了,沒想到學了c++"還沒辦法"用于項目開發。因為還需要熟悉開發環境。在此,簡要記錄下初次探索MFC架構的一點心得體會。
要想利用vs開發項目,我們必需要了解MFC的架構以及它們間的相互依賴關系。
1) 應用程序程序實例: theApp;
它其實就是我們所啟動的程序實例。是全局的。一旦它釋放掉了,則整個程序的生命周期就結束了。我們可以通過全局函數::AfxGetApp();來取得該實例。
2) MFC程序的主框架: CMainFrm;
一個MFC應用程序也只有一個主框架。它負責程序中各視圖以及各種面板的布局展現工作。我們可以在任意位置通過::AfxGetMainWnd();或::AfxGetApp()->m_pMainWnd;
來獲得該主框架對象。
3) 文檔模型: CDocTemplate;
正常來說,文檔模型的職責:負責維護程序中所創建的文檔實例。(它同主框架一樣,由應用程序theApp維護)。
在應用程序中,我們可以通過 GetFirstDocTemplatePosition();取得第一個文檔模型對象的地址(返回值為:POSITION類型).可以通過GetNextDocTemplate();取得下一個。從而
進行遍歷。
而在文檔中,我們可以通過GetDocTemplate();來取得其所屬的文檔模型對象。
4) 文檔:CDocument:
其是負責數據維護的工作。其通過結合相應的視圖,可將數據展現。一個文檔可以維護多個視圖。(注意:一個視圖只能屬于一個文檔)。
在主框架對象中,我們可以通過:GetActiveDocument();取得當前活動的文檔對象
在文檔模型對象中,我們通過:GetfirstDocPosition();與GetNextDoc();遍歷文檔對象
在文檔視圖對象中,我們通過:GetDocument();取得所屬的文檔對象
5) 視圖:CView:
與文檔配置,實現數據的界面展現。
在主框架類中,我們通過:GetActiveView();獲得當前活動視圖
在文檔類中,可以通過:GetFirstViewPosition();與GetNextView();遍歷出所有的視圖。