基於mfc的框架程式剖析
(一)mfc 程式中的winmain函式
1.先來個定義,mfc:一套物件導向的函式庫,一套c++類的集合,搞windows應用程式的開發。
2.mfc將大部分的windows api封裝到c++中,以類成員函式的形式提供給程式設計師呼叫。
3.mfc中類的命名都以字母"c"開頭,就像delphi中類名以t開頭,oracle的類名以o開頭一樣,但並非必需。
4.mfc程式中找不到winmain函式,因為ms在mfc的底層框架類中封裝了這些每乙個視窗應用程式都需要的步驟,目的主要是為了簡化程式設計師的工作。
5.mfc的winmain函式是在編譯鏈結時,由鏈結器將該函式鏈結到程式中的。
6.ms在提供了部分mfc的源**,就在安裝目錄下../vc98/mfc/src。
8.無論是全域性變數,還是全域性物件,程式在執行時,在載入main函式之前,就已經為全域性變數或全域性物件分配了記憶體空間。
9.對win32sdk應用程式來說,應用程式的例項是由例項控制代碼(winmain函式的引數hinstance)來標識,而對mfc來說,通過乙個應用程式類的物件來唯一標識應用程式的例項。每乙個mfc程式例項有且僅有 乙個例項化物件。
(二)mfc框架視窗
1.mfc已經為我們預定義了一些預設的標準視窗類,只需要選擇所需的類,然後註冊就可以了。視窗類的註冊是由afxenddeferregisterclass函式完成的,位於wincore.cpp中。
2.視窗的建立功能是由cwnd類的createex函式實現的,該函式的宣告位於afxwin.h檔案中,實現位於wincore.cpp當中。
3.m_pmainwnd->showwindow(sw_show)顯示視窗,m_pmainwnd->updatewindow()更新視窗.
(三)訊息環
1.cwinthread類的run函式完成這一任務,在afxwinmain函式中被呼叫,呼叫形式:pthread->run()。
(四)視窗過程的函式
1.採用了一種稱之為訊息對映的機制來處理各種訊息
(五)文件/視類結構
1.資料本身與它的顯示分享開。資料的儲存和載入由文件類來完成,資料的顯示和修改則由視類來完成。
(六)幫助對話方塊類
1.caboutdlg類(其基類是cdialog類)
視窗類、視窗類物件與視窗
(一)三者的關係
1.mfc中使用的大部分函式名與相應的sdk函式名相同。
2.如果在定義自己的成員函式時,當前定義的成員函式與內部呼叫的api函式名相同,那麼後者前面必須加「::」符號,否則程式在編譯或執行時會報錯。
3.c++視窗類物件的生命週期不是一致的。當乙個視窗銷毀時,與c++視窗類物件沒有關係,它們之間的紐帶僅僅在於這個c++視窗類內部的成員變數:m_hwnd,該變數儲存了與這個c++視窗類物件相關的那個視窗的控制代碼。視窗銷毀時,與之對應的c++視窗類物件銷毀與否,要看其生命週期是否結束。但c++視窗類物件銷毀時,與之相關的視窗也將銷毀。
小結
mfc的框架內部也有與win32sdk程式相應的操作,包括設計視窗類,註冊視窗類,顯示和更新視窗,訊息 環,以及視窗處理過程。
mfc最終的訊息處理是利用訊息對映來完成的。
很多視窗類的函式呼叫都不再需要傳遞視窗控制代碼了,因為它們都在內部維護了乙個視窗控制代碼成員變數。
附:(mfc類繼承表)
MFC 框架學習
1.最簡單的框架程式 使用mfc基礎類庫,編寫乙個最簡單的框架程式 include public bool initinstance cframewnd pmainwnd new cframewnd pmainwnd showwindow m ncmdshow pmainwnd updatewind...
MFC框架程式剖析
1 mfc microsoftfoundation class,微軟基礎類庫 是微軟為了簡化程式設計師的開發工作所開發的一套c 類的集合,是一套物件導向的函式庫,以類的方式提供給使用者使用 二 基於mfc的程式框架剖析 1 mfc程式的classview標籤頁 圖 2 繼承關係 1 cmainfra...
MFC框架程式剖析
mfc程式的執行過程 4 進入訊息迴圈。雖然也設定了預設的視窗過程函式,但是mfc應用程式實際上是採用訊息對映機制來處理各種訊息的。當收到wm quit訊息時,退出訊息迴圈,程式結束。面已經知道,在乙個windows程式中,winmain函式作為程式的入口函式,乙個程式的是 設計視窗 給視窗設定相應...