1、MFC應用程序類型編程
上篇文章的彩蛋:可經過使用MFC應用程序嚮導(MFC AppWizard)的功能來建立所須要的應用程序,這意味着不須要輸入任何代碼。MFC除了應用程序嚮導,還對應用程序項目有着獨特的管理方式。框架
1. MFC AppWizard函數
做用:能爲用戶生成一些經常使用的標準程序結構和編程風格,它們被稱爲應用程序框架結構。工具
提供的應用程序框架類型:包括MFC AppWizard(dll)、MFC AppWizard(exe)、Win32 Application等,這些類型基本上能知足各個層次用戶的不一樣須要,但通常的用戶更關心的是MFC AppWizard(exe)應用程序框架,由於它包含用戶最經常使用的三種應用程序類型:單文檔、多文檔和基於對話框的應用程序。優化
2. 單文檔應用程序、多文檔應用程序、基於對話框的應用程序spa
基於對話框的應用程序:沒有菜單、工具欄及狀態欄,也不能處理文檔翻譯
下面的篇幅都默認已經建立了一個單文檔應用程序Ex_SDI調試
2、項目文件和項目配置項目管理
1. 工程/項目資源
應用程序包含了除源程序外的許多信息,所以在Visual C++中常將它們稱爲「項目」或「工程」。
2. 工做文件夾
Visual C++是用文件夾來管理一個應用程序項目的,這個文件夾稱爲「工做文件夾」,且文件夾名就是項目名。如Ex_SDI就是一個工做文件夾名。
在工做文件夾下包含源程序代碼文件(.cpp、.h)、項目文件(.dsp)以及項目工做區文件(.dsw)等。
3. 探索工做文件夾
以單文檔應用程序項目Ex_SDI爲例,該文件夾內除了有上述的文件外,還有相應的Debug或Release、Res等子文件夾。
具體的圖示可參考p38的圖1.22,也可參考本身應用程序項目的文件夾。
4. Win32 Debug版本的運行程序
用Visual C++ 6.0應用程序嚮導建立項目時,系統會自動爲項目建立Win32 Debug的運行程序,並使用相應的默認配置。
它與Win32 Release版本的區別在於:Debug版本的運行程序有相應的調試信息碼,以便於程序的調試,而Release版本的運行程序沒有,但Release版本的運行程序通過代碼的優化,其程序的運行速度加快。
5. 讓應用程序可交付
選擇「組建」→「移除工程配置」菜單命令,在彈出的對話框中,選擇「Ex_SDI-Win32 Release」,而後單擊「肯定」按鈕。從新編連後,可將默認的Win32 Debug版本修改爲Win32 Release版本。這樣,在Release文件夾中的exe文件就是交付用戶的可執行文件。
3、項目管理和類結構
1. 項目工做區
做用:①有效地管理項目中的那些文件;②維護各源文件之間的依賴關係。
內容:包含三個選項卡(ClassView類頁面、ResourceView資源頁面、FileView文件頁面)
2. 應用程序的MFC類結構
咱們使用MFC AppWizard建立一個默認的Windows單文檔應用程序,並命名爲「Ex_SDI」。
將項目工做區窗口切換到ClassView選項卡,能夠看到MFC爲單文檔應用程序項目Ex_SDI自動建立了類CAboutDlg、CEx_SDIApp、CEx_SDIDoc、CEx_SDIView和CMainFrame。
上面這些類之間的說明以下:
4、OnDraw和消息添加
1. OnDraw函數
在應用程序框架中,視圖類用來封裝和管理框架窗口的子窗口,當子窗口無效時,就會自動調用用戶視圖類的OnDraw函數。
翻譯:子窗口無效→調用視圖類的OnDraw函數
2. 在視圖類中添加單擊鼠標的消息處理(映射)
說明:上述消息的映射遵循前述的MFC消息映射機制,且在代碼中出現了//{{AFX_MSG(…)和//}}AFX_MSG以及//{{AFX_MSG_MAP(…)和//}}AFX_MSG_MAP等特殊標記,它們表示之間的內容由MFC ClassWizard自動管理。
補充:
MFC AppWizard:能爲用戶生成一些經常使用的標準程序結構和編程風格,它們被稱爲應用程序框架結構。
CEx_SDIView類:應用程序視圖類,負責數據的顯示、繪製和其餘用戶交互。
消息的映射:當觸發「WM_LBUTTOMDOWN消息」時,程序會執行OnLButtonDown函數內的代碼