乙個完整的視窗需要經過下面四個操作步驟:
1.設計乙個視窗類
2.註冊視窗類
我們的第乙個mfc程式中的 cmainframe 類有乙個成員方法(函式)precreatewindow(createstruct& cs)
bool cmainframe::precreatewindow(createstruct& cs)
它的實現裡呼叫了 cframewnd::precreatewindow(cs) ,
cframewnd::precreatewindow的具體實現檔案是:microsoft visual studio/vc98/mfc/src/winfrm.cpp
開啟看看,
bool cframewnd::precreatewindow(createstruct& cs)
if ((cs.style & fws_addtotitle) && afxdata.bwin4)
cs.style |= fws_prefixtitle;
if (afxdata.bwin4)
cs.dwexstyle |= ws_ex_clientedge;
return true;
}afxdeferregisterclass 在 microsoft visual studio/vc98/mfc/src/afximpl.h 中有定義,
#define afxdeferregisterclass(fclass) afxenddeferregisterclass(fclass)
其實 afxdeferregisterclass 就是:afxenddeferregisterclass,
在 microsoft visual studio/vc98/mfc/src/wincore.cpp 檔案中有 afxenddeferregisterclass 函式的定義:
bool afxapi afxenddeferregisterclass(long ftoregister)
可以看到他裡面有很得if語句,這個函式就是註冊視窗類。
3.建立視窗
4.顯示及更新視窗
最後我們看看這個mfc程式的訊息迴圈,在
MFC程式執行過程
一 mfc程式執行過程剖析 相信大家有點暈點了吧,實際程式設計中沒有必要深刻理解這麼多,這些大都是由mfc內部自動幫我們完成的。實際mfc程式設計過程中,其實懂得mfc程式中各個函式的執行流程即可。有時候過於追究mfc細節會白白浪費我們的精力,應該將主要精力放在使用mfc解決實際問題上。二 vc6中...
MFC程式的執行過程
一 程式的誕生 2 afxwinmain執行afxwininit,後者呼叫afxinitthread,把訊息佇列盡量加大到96 6 cmyframewnd構造呼叫create,產生主視窗,我們在create引數中指定的視窗類是null,於是mfc根據視窗種類,自行的為我們註冊乙個名為 afxfram...
MFC應用程式的執行過程和原理
我們有很多的工程師是從做微控制器程式使用c語言開發轉到c 的mfc開發的,我們的思路都是c語言從main函式入口開始執行,這就是慣性思維.當我們切換到mfc的框架下不知道這個 應該是怎麼閱讀和怎麼寫,沒有找到我們熟悉的main函式入口.不知道你看到這裡有沒有認同,在win32中還能看到winmain...