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應用的...