cmainframe()包含了對工具欄、狀態列、視窗的定義。
c**view包含了最主要的處理功能,如選單操作、快捷鍵、使用者互動操作等。
caboutdlg定義了about對話方塊。
其中,前四個都是在程式主視窗出現之前被建立的,caboutdlg是在「關於」對話方塊彈出時被建立的
lz需要系統地學習一下。
cmainframe是個框架,是你整個應用程式的主視窗,他負責管理應用程式的選單,工具欄,狀態列等。中間的區域,成為客戶區,由view類來管理,view類也是乙個視窗,他是mainframe的子視窗。ondraw函式負責繪製客戶區的內容,該函式會被多次呼叫,他可以被你自己呼叫,比如你呼叫view類的updatewindow,或者在document類中呼叫updateallviews等等,mfc自動會呼叫ondraw。他還會被windows呼叫,windows在需要重新整理視窗的時候傳送給視窗wm_paint訊息,mfc事先已經預定義了,在響應wm_paint訊息的時候會呼叫ondraw。何時windows會傳送wm_paint呢,比如視窗從最小化還原,比如視窗被使用者改變了大小等等。這部分內容最好看看windows gdi,windows gdi是windows作業系統整個視覺化介面的基礎。
學過pe檔案格式,你就明白,程式在進入winmain之前要做很多事情,比如初始dos頭,分配函式表,初始化全域性變數。之後才進入程式入口(winmain)mfc對windowsapi進行了封裝。在用嚮導編譯成的二進時**,mfc編譯器鏈結器把原始檔編譯成pe檔案格式儲存在磁碟上。
程式執行的時候,從pe檔案頭開始執行,在進入winmain函式之前,進行一系列的必備的初始化。
initinstance是cwinthread的乙個虛函式,initinstance就是「初始化例項」的意思,可見,它是在例項建立時首先被呼叫的。應用程式總要過載這個虛函式,進行系統設定,建立執行環境。例如,主視窗一定要在initinstance()中建立,因為該函式退出後就進入該執行緒的訊息迴圈。
mfc執行流程。
_twinmain(winmain的別名,用define替換的)-》afxwinmain->初始化執行緒,呼叫initinstance初始化視窗,呼叫run函式進入訊息迴圈。
希望對你有用。看看msdn的解釋:實際上windows允許乙個程式同時執行多次,每一次都稱為乙個「例項」(instance)。在每乙個例項開始的時候系統都會呼叫initinstance()這個函式進行初始化。
mfc中dodataexchange的作用:
將介面上的控制項與乙個變數或者乙個類物件相關聯!
資料交換
例如文字框控制項 當關聯了乙個變數的時候 就需要在這個控制項和這個變數之間通過dodataexchange建立聯絡
然後通過呼叫updatedata選擇當使用者更改了輸入的時候 是否更新變數值
或更改程式變數值後是否更新介面
操作注意問題:.
1.呼叫updatedata選擇當使用者更改了輸入的時候 是否更新變數值2.當在按鈕中,引入另乙個類時,必須在未設定按鈕函式時候,就已經建立好將要引入的類,否則會造成無法讀取要引入的類,!!!
我的理解是主函式的入口函式
mfc中的UpdateData 作用
在vc裡,可以為對話方塊上的控制項設定對應的變數,如文字框可以設定對應的cstring變數,但是在程式中修改文字框的內容時,對應的cstring變數不會隨著改變,需要呼叫updatedata true 來改變變數。類似的,程式中改變了cstring變數,也需要呼叫updatedata false 也...
MFC中的常用類
cstring類 cstring提供了多種定義和賦值形式,下面通過範例來說明 1 一般形式 cstring str1 定義乙個cstring物件str1 cstring str2 a string 定義乙個cstring物件,在緊跟其後的括號內用字串給其賦值 str1 str2 用運算子 給物件賦值...
JVM 五 類的初始化
7種主動使用和被動使用,會觸發類的初始化 當初始化類的時候,要求父類都已經被初始化,但是這條規則不適用於介面 inte ce public class test06 inte ce threadparent class threadchild implements threadparent在這個例子...