三 MFC框架程式剖析

2021-05-02 05:46:37 字數 2266 閱讀 8276

1.cwnd

cwnd

類是mfc中乙個重要的類,它封裝了與視窗有關的操作。

2.mfc

中的winmain

mfc全域性物件

5.afxwinmain

函式

winmain

6.

設計和註冊視窗

mfc已經為我們預定義了一些預設的標準視窗類,只需要選擇所需的視窗類,然後註冊就可以了。視窗類的註冊是由afxenddeferregisterclass函式完成的。afxenddeferregisterclass函式判斷視窗類的型別,然後賦予相應的類名,這些類名都是mfc預定義的。之後計用afxregisterclass函式註冊視窗類。

afxregisterclass

函式首先獲得視窗柯類資訊。如果該視窗類已經註冊,則直接返回乙個真值;如果尚未註冊,就呼叫registerclass函式註冊該視窗類。

7.

建立視窗

在mfc程式中,視窗的建立功能由cwnd類的createex函式實現,該函式的宣告位於afxwin.h檔案中。實現**位於wincore.cpp檔案中。如果在子類的precreatewindow函式中修改了createstruct結構體的值,那麼,接下來呼叫createwindowex函式時,其引數就會發生相應的改變,從而就會建立乙個符合我們要求的視窗。

8.

顯示及更新視窗

m_pmainwnd->showwindow(sw_show);

m_pmainwnd->updatewindow();

這兩行**的功能是顯示應用程式框架視窗和更新這個視窗。

9.

訊息迴圈

cwinthread

類的run函式就是完成訊息循五常這一任務的,該函式是在afxwinmain函式中呼叫的。

呼叫形式如下

pthread->run();

10.

視窗過程函式

afxenddeferregisterclass

函式有這樣一句**。

wndcls.lpfnwndproc=defwindowproc;

這行**的作用指定乙個預設的視窗過程defwindowproc。但實際上,mfc程式並不是把所有訊息都交給defiwindowproc這一預設的視窗過程來處理的,而是採用一種稱之為訊息對映的機制來處理各種訊息的。

11.mfc

程式執行過程

進入訊息迴圈。雖然也設定了預設的視窗過程函式,但是,mfc應用程式實際上是採用訊息對映機制來處理各種訊息的。當收到wm_quit訊息時,退出訊息迴圈,程式結束。

12.

文件視類結構

mfc程式除了主框架視窗外,還有乙個視窗視類視窗,對應的類是cview類,cview類也派生於cwnd類。

ctestdoc

類派生於cdocument類。其基類是ccmdtarget,後者又派生於cobject類,ctestdoc不是乙個視窗類,是乙個文件類。

13.

視窗類、視窗類物件與視窗

c++視窗類物件與視窗並不是一回事,它們之間惟一的關係就是c++視窗類物件內部定義了乙個視窗控制代碼變數,儲存了與這個c++視窗類物件相關的那個視窗的控制代碼。視窗銷毀時,與之對應的c++視窗類物件銷毀與否,要看其生命週期是否結束,但c++視窗類物件銷毀時,與之相關的視窗也將銷毀。

MFC框架程式剖析

1 mfc microsoftfoundation class,微軟基礎類庫 是微軟為了簡化程式設計師的開發工作所開發的一套c 類的集合,是一套物件導向的函式庫,以類的方式提供給使用者使用 二 基於mfc的程式框架剖析 1 mfc程式的classview標籤頁 圖 2 繼承關係 1 cmainfra...

MFC框架程式剖析

mfc程式的執行過程 4 進入訊息迴圈。雖然也設定了預設的視窗過程函式,但是mfc應用程式實際上是採用訊息對映機制來處理各種訊息的。當收到wm quit訊息時,退出訊息迴圈,程式結束。面已經知道,在乙個windows程式中,winmain函式作為程式的入口函式,乙個程式的是 設計視窗 給視窗設定相應...

MFC框架程式剖析 3

我們來看下我們建立的視窗 視視窗對應的是ctestview類,而主框架視窗對應的就是cmainframe類,而cmainframe和ctestview都有共同乙個基類cwnd,它封裝了與視窗相關的操作。此外,還有個ctestdoc類,不過它並不是乙個視窗類,而是乙個文件類。最後,caboutdlg類...