MFC應用程式執行流程

2021-05-21 12:04:59 字數 1865 閱讀 2671

extern "c" int winapi _twinmain(hinstance hinstance, hinstance hprevinstance, lptstr lpcmdline, int ncmdshow)

這一下清楚了,mfc中的winmain函式其實什麼也沒做,只是呼叫了乙個函式afxwinmain。

//*   5.mfc程式的入口點函式*/

//mfc作了乙個"乾坤大挪移",將winmain函式的全部責任轉移交給了mfc程式的入口點函式---afxwinmain。

注釋:該函式定義在../visual studio.net/vc7/atlmfc/src/mfc/winmain.cpp中。

, ,,,

,,

};...//

static _afxsyspolicydata rgcomdlgdata =

, ,,};

static _afxsyspolicies rgpolicies =

, ,,};

_afxsyspolicies *ppolicies = rgpolicies;

_afxsyspolicydata *pdata = null;

...//

}// 初始化 ole 庫

if (!afxoleinit())

afxenablecontrolcontainer();

// 標準初始化

setregistrykey(_t("應用程式嚮導生成的本地應用程式"));

loadstdprofilesettings(4); // 載入標準 ini 檔案選項(包括 mru)

// 註冊應用程式的文件模板。

// 文件模板將用作文件、框架視窗和檢視之間的連線

csingledoctemplate* pdoctemplate;

pdoctemplate = new csingledoctemplate(

idr_mainframe,

runtime_class(ctestdoc),

runtime_class(cmainframe),       // 主 sdi 框架視窗

runtime_class(ctestview));

pdoctemplate->setcontainerinfo(idr_cntr_inplace);

adddoctemplate(pdoctemplate);

// 分析標準外殼命令、dde、開啟檔案操作的命令列

ccommandlineinfo cmdinfo;

parsecommandline(cmdinfo);

if (!processshellcommand(cmdinfo))

return false;

// 唯一的乙個視窗已初始化,因此顯示它並對其進行更新

m_pmainwnd->showwindow(sw_hide);

m_pmainwnd->updatewindow();

return true;

} return true;

}return cwinthread::run();

}終於出現了::translatemessage和::dispatchmessage,熟悉win32api程式設計的人一定會眼睛一亮,終於挖出源頭了。

由源**可以看出:該函式主要作一些清除工作,將該釋放的東西釋放,比如解除安裝鉤子等。

等到afxwinterm函式結束,afxwinmain函式返回nreturncode值,且該值也將作為_winmain函式的返回值返回。

讓我們回過頭來再看一看c/c++執行時庫的啟動函式的源**:

注釋2:函式定義在../visual studio.net/vc7/crt/src/crtexe.c中

MFC應用程式執行流程

cmainframe 框架視窗 ctestview 子視窗 ctestdoc 資料文件 vc 下的mfc應用程式執行流程 然後進入到 twinmain hinstance hinstance hinstance hprevinstance,lpstr lpcmdline int ncmdshow 再...

MFC 應用程式框架 程式入口和執行流程

第一部分 木木的家園,在此表示感謝!一 mfc程式執行過程剖析 下面以vc6中的sdi工程為例,通過給每個函式前設定斷點後調式執行,可以看出mfc的sdi的執行流程。記錄如下,希望對mfc執行有疑惑的人有幫助。cpp view plain copy 3 bool 4 csdidoc csdidoc ...

Android應用程式執行流程

android應用程式執行時會先讀取androidmanifest.xml清單檔案,根據清單檔案中的配置資訊設定應用程式的基本資訊,通過過濾條件查詢到入口的activity,並查詢到對應的類名,然後建立該類的例項。接著會呼叫該類的oncreate方法設定activity顯示介面。android應用的...