05 MFC框架執行大概流程

2021-09-05 18:31:47 字數 1836 閱讀 9561

/*

*hellomfc.h

*/#ifndef _hello_mfc_

#define _hello_mfc_

public:

virtual bool initinstance();

};class cmainwindow : public cframewnd;

#endif

/*

*hellomfc.cpp

*/#include #include "hellomfc.h"

begin_message_map(cmainwindow, cframewnd)

on_wm_lbuttondown()

end_message_map()

cmainwindow::cmainwindow()

void cmainwindow::onlbuttondown(uint nflags, cpoint point)

我們現在如圖所示f9下斷點,然後f10進入到afxwinmain中;

下面我們將afxwinmain提出來寫點注釋:

int afxapi afxwinmain(hinstance hinstance, hinstance hprevinstance,

_in_ lptstr lpcmdline, int ncmdshow)

*/ if (!afxwininit(hinstance, hprevinstance, lpcmdline, ncmdshow))

goto initfailure;

// 全域性初始化,幾乎不用,我們不去關注它

goto initfailure;

// 這就是我們的核心,就是我們**中我們的類重寫的虛函式,這裡就進到我

//們的initinstance,這裡也就解釋了為什麼我們的initinstance()要放回true

//如果返回false就會銷毀視窗,退出程式

if (!pthread->initinstance())

nreturncode = pthread->exitinstance();

goto initfailure;

} //這裡就實現win32中訊息迴圈,下面把關鍵**貼出來

/* // acquire and dispatch messages until a wm_quit message is received.

for (;;)

// 非空閒狀態

do} while (::peekmessage(&(pstate->m_msgcur), null, null, null, pm_noremove));

} */

nreturncode = pthread->run();

initfailure:

#ifdef _debug

// check for missing afxlocktempmap calls

if (afxgetmodulethreadstate()->m_ntempmaplock != 0)

afxlocktempmaps();

afxunlocktempmaps(-1);

#endif

afxwinterm();

return nreturncode;

}

MFC執行框架

2 winmain登場 extern c int winapi twinmain hinstance hinstance,hinstance hprevinstance,lptstr lpcmdline,int ncmdshow twinmain函式的 t 是為了支援unicode而準備的乙個巨集。...

MFC單文件框架分析及執行流程

首先來分析一下mfc單文件類的結構 它包括如下幾個類 caboutdlg 對話框框類,對應應用程式的 幫助 關於 選單,彈出 關於 對話方塊。cmainframe 派生自cframewnd類,為框架視窗物件,對應應用程式的主視窗。c view 派生自檢視類cview 為檢視物件,對應應用程式的客戶視...

zendframework 框架執行流程

1 通過url重寫請求都定位到入口檔案,預設是index.php 2 入口檔案載入系統的配置,單例生成前端控制器。老版本的框架需要在入口檔案中新增部分配置和外掛程式註冊,後來由專門負責程式引導的bootstrap類控制 3 前端控制器初始化請求和返回物件,獲取路由分發到具體控制器的動作 4 控制器根...