VC 中的MFC程式的執行過程

2021-05-26 05:19:35 字數 842 閱讀 4307

程式的誕生

#afxwinmain執行afxwininit,後者又呼叫afxinitthread,把訊息佇列盡量加大。

#cmyframewnd構造函式呼叫create,產生主視窗。我們在create引數中指定的視窗類是null,於是mfc根據視窗種類,自行為我們註冊乙個名為"afxframeorview42d"的視窗類。

#回到initinstance中繼續執行showwindow,顯示視窗。

#執行updatewindow,於是發出wm_paint.

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

程式開始執行

#wm_paint經由::dispatchmessage送到視窗函式cwnd::defwindowproc中。

#cwnd::defwindowproc將訊息傳遞給訊息對映**(message map)

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

#標準訊息的處理程式亦有標準命名,例如wm_paint必然由onpaint處理。

程式的死亡

#使用者單擊file/close,於是發出wm_close.

#cmyframewnd並沒有設定wm_close處理程式,於是交給預設的處理程式。

#預設函式對於wm_close的處理方式就是呼叫::destorywindow,並因而發出wm_destory。

#預設的wm_destroy處理方式是呼叫::postquitmessage。因此發出wm_quit.

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

MFC程式的執行過程

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

MFC程式執行過程

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

VS中MFC執行過程

win32程式是從winmain開始執行的,但是mfc把winmain給封裝,編譯到mfc80.dll中了。mfc執行順序 1 windows呼叫winmain函式 2 winmain裡面呼叫afxwinmain函式 3 4 如果initinstance函式返回true,呼叫cwinthread中的...