今天閒來無事,想自己用斷點追蹤下mfc框架怎麼把winmain入口函式封裝起來的,首先應該知道在mfc中winmain函式是在平台sdk的某個標頭檔案中已經定義好的,並且它是通過afxwinmain函式呼叫的,以下是跟蹤過程:
1.先用f9設定2個斷點:
第二個斷點設定在winmain.cpp(這個檔案在mfc/src中自己找,裡面就是afxwinmain函式)的第48行判斷語句處:
// perform specific initializations
//斷點2
if (!pthread->initinstance())//這裡用來判斷執行緒是否建立成功
nreturncode = pthread->exitinstance();
goto initfailure;
}因此,整個過程總結起來就是……
ps:解釋一下,有人可能會問,為什麼編譯器不直接呼叫winmain函式,而要用afxwinmain函式呼叫winmain函式呢,這是因為以afx命名的函式都是全域性函式,可以供整個平台呼叫,而winmain則不行。再者,在afxwinmain函式中可以對整個mfc框架進行多個成員函式的初始化(包括訊息迴圈機制),最後還可以通過afxwinmain將值返回給winmain函式,從而獲得windows程式的入口。唉,這個問題真的困擾了我很多天-_-!現在才完全想明白……
MFC中的WinMain函式
winmain是windows程式的入口點函式,與dos程式的入口點函式main的作用相同,當winmain函式結束或返回時,windows應用程式結束。winmain函式的原型如下 int winapi winmain hinstance hinstance,hinstance hprevinst...
MFC框架中消失的WinMain
似乎微軟就是不想讓人清楚 明白的了解mfc框架將winmain 封裝的過程。微軟在mfc中是這樣隱藏呼叫winmain 的 1.在tchar.h檔案中定義了乙個巨集 define twinmain winmain 這樣mfc源 在編譯的時候,twinmain就會被替換為winmain 這樣作業系統就...
WinMain函式引數介紹
winmain函式的定義 winmain函式的原型宣告如下 int winapi winmain hinstance hinstance,當前視窗例項 hinstance hprevinstance,前乙個視窗例項 lpstr lpcmdline,命令列引數 int ncmdshow 視窗顯示狀態 ...