程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> MFC vs. SDK程序流程

MFC vs. SDK程序流程

編輯:.NET實例教程

大家都知道,Windows API編程以及其消息處理,其過程都清晰可見,大體步驟如下:

1)聲明消息窗口類

2)注冊窗口類

3)createWindows

4)消息獲得以及分派(Windows procedure)。

但是,對於MFC同樣是Windows程序,其流程卻顯得灰暗不明。先具體分析(備錄)如下:

在MFC中有兩個重要的類,CWinApp,CFrameWnd,它們兩個的存在在某種意義上來說代替了WinMain 和 WinProc的存在。

對於任何一個MFC程序,都存在一個Application Object(theApp),由於它是一個全局對象,因此是一個程序的入口點,當TheApp構造完了以後,由鏈接器將WinMain加入到應用程序中,它調用了AfxWinMain()函數。之後在AfxWinMain中,執行了AfxWinInit(),pApp->InitApplication(),pApp->InitInstance(), pApp->Run();AfxWinTerm();完成程序的整個過程。

關於 InitInstance: 首先,它會new一個CFrameWnd成員,其構造函數調用了Create();create()裡面調用了createEx(),CreateEx()調用了PreCreateWindows();這裡面MFC默認注冊了5種類型的窗口類型(Wnd,controlbar, mdiframe, FrameOrVIEw, OleControl)。
消息過程的流程:主要是調用AfxWndProc-〉AfxCallWndProc-> Wnd.WindowProc().這裡其實是程序真正的處理過程,首先判斷是否為WM_COMMAND消息;不是就按照通常的方法,進行處理(查找消息映射表,由宏建立起來的內存表),是就按照MFC規定的路線進行處理。CWnd::OnCommand()調用的是OnCmdMsg(),這裡MFC規定了其消息的路線(vIEw ,document,framewnd,winapp)。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved