MFC程式的執行過程

2021-06-14 17:46:29 字數 1102 閱讀 6236

一、程式的誕生

2、afxwinmain執行afxwininit,後者呼叫afxinitthread,把訊息佇列盡量加大到96;

6、cmyframewnd構造呼叫create,產生主視窗,我們在create引數中指定的視窗類是null,於是mfc根據視窗種類,自行的為我們註冊乙個名為「afxframeorview2d」的視窗類;

7、回到initinstance中繼續執行showwindow,顯示視窗;

8、執行updatewindow,於是發出wm_paint;

9、回到afxwinmain,執行run,進入訊息迴圈。

二、程式開始執行

2、wm_paint經由::dispatchmessage送到視窗函式cwnd::defwindowproc中;

3、cwnd::defwindowproc將訊息傳遞過訊息對映**(message map);

4、傳遞過程中發現有相符專案,於是呼叫專案中對應的函式,此函式是應用程式利用begin_message_map和end_message_map之間的巨集設立起來了;

5、標準訊息的處理程式亦有標準命名,例如wm_paint必須有onpaint處理。

三、程式的死亡

1、使用者單擊[file/close],於是發出wm_close;

2、cmyframewnd並沒有設定wm_close處理程式,於是交給預設處理程式

3、預設函式對於wm_destroy處理方式是呼叫::destroywindow,並因而發出wm_destroy;

4、預設的wm_destroy處理方式是呼叫::postquitmessage,因此發出wm_quit;

7、最後回到afxwinmain,執行afxwinterm,結束程式。

乙個簡單完整例子的**:

#include "stdafx.h"

class cmyframewnd:public cframewnd//框架視窗類(負責管理 主視窗);;

/*add,sub,mul,div

lea 取位址中的數值

call 調子程式令

jmp無條件跳轉

je若相等則跳轉

jnz若不相等或不等於0則轉

*/

MFC程式執行過程

一 mfc程式執行過程剖析 相信大家有點暈點了吧,實際程式設計中沒有必要深刻理解這麼多,這些大都是由mfc內部自動幫我們完成的。實際mfc程式設計過程中,其實懂得mfc程式中各個函式的執行流程即可。有時候過於追究mfc細節會白白浪費我們的精力,應該將主要精力放在使用mfc解決實際問題上。二 vc6中...

MFC 執行過程

pthread initinstance 呼叫子類中的initinstance processshellcommand cmdinfo 對命令列進行解釋 ctestdoc ctestdoc 構造文件類物件 cmainframe cmainframe 構造框架視窗物件 cframewnd loadfr...

VC 中的MFC程式的執行過程

程式的誕生 afxwinmain執行afxwininit,後者又呼叫afxinitthread,把訊息佇列盡量加大。cmyframewnd構造函式呼叫create,產生主視窗。我們在create引數中指定的視窗類是null,於是mfc根據視窗種類,自行為我們註冊乙個名為 afxframeorview...