MFC學習筆記(一) MFC框架程式剖析

2021-05-22 02:25:58 字數 1688 閱讀 3693

基於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函式作為程式的入口函式,乙個程式的是 設計視窗 給視窗設定相應...