第3章 MFC框架程序剖析

參考: https://blog.csdn.net/u014162133/article/details/46573873程序員

 

一、框架

二、MFC簡介:MFC(Microsoft Foundation Class,微軟基礎類庫)是微軟爲了簡化程序員的開發工做所開發的一套C++類的集合,是一套面向對象的函數庫,以類的方式提供給用戶使用。利用這些類,能夠有效發幫助程序員完成Windows應用程序的開發。函數

MFC AppWizard是一個輔助生成源代碼的嚮導工具,它能夠幫助咱們自動生成基於MFC框架的源代碼。在嚮導的每個步驟中,咱們能夠根據須要來選擇各類特性,從而實現定製應用程序。工具

三、咱們在編寫MFC程序時,在咱們編寫的程序中找不到WinMain函數,是由於MFC作了封裝,將這些放到了安裝路徑下,好比:D:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC,WinMain函數在APPMODUL.CPP文件中,這個函數是在程序編譯連接時,由連接器將該函數連接到咱們的MFC程序中的。ui

4MFC大體流程this

CTestApp theApp;//構造全局對象
WinMain() { AfxWinMain();//調用下面的函數
} AfxWinMain() { pThread->Initinstance();//初始化工做和註冊窗口類,窗口顯示和更新
    pThread->Run();//消息循環
} //而在BOOL CTestApp::InitInstance()中的代碼
CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CTestDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window
 RUNTIME_CLASS(CTestView)); AddDocTemplate(pDocTemplate); //完成了將這三個類關聯起來的工做。

程序執行順序spa

(1) 先執行到全局對象定義處:CTestApp theApp;.net

(2) 而後到了TestApp的構造函數指針

(3) 而後才執行到WinMain函數調試

五、在程序入口函數mainWinMain加載前,系統已經爲全局變量或全局對象分配了存儲空間,併爲他們賦了初始值。對一個全局對象來講,此時就已經調用了該對象的構造函數,構造該對象,並進行初始化操做。

在MFC程序中,在WinMain以前有個theApp全局變量先被構造並被初始化,而因爲子類構造函數執行前,其父類的構造函數先被執行,因此CTestApp的父類CWinAPP的構造函數先執行。產生了theApp對象後,在WinMain()中的指針*pThread和*pApp就有了內容,這兩個指針返回的都是theApp對象的地址。

六、對MFC程序來講,經過產生一個應用程序類的對象來惟一標識應用程序的實例。每個MFC程序有且僅有一個從應用程序類(CWinApp)派生的類。每個MFC程序實例有且僅有一個該派生類的實例化對象,也就是theApp全局對象。該對象就表示了應用程序自己。

七、在MFC中,以Afx爲前綴的函數都是全局函數,能夠在程序的任何地方調用它們。

八、

九、

十、窗口類、窗口類對象與窗口關係

十一、如何在單文檔文件中顯示一個CButton的對象?

CMainFrame::OnCreate()中定義一個CButton的對象btn;而後調用

btn.Create("維新",WS_DISABLED   |WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,  CRect(0,0,300,100),/*GetParent(),*/this,123);

注意:

(1) 此處btn不能是局部變量,不然它的生命週期過短,將不能顯示。

(2) 在CBUTTON類的Create函數的第二個參數中加入WS_VISIBLE 參數才行。不然必須調用ShowWindow顯示,也能夠在view的OnCreate消息響應函數中加入

(3) CButton類的定義頭文件在afxwin.h中,而stdafx.h包含了afxwin.h,因此能夠直接使用。由於MFC中的每個類中都有#include "stdafx.h"的聲明。

(4) 按鈕的父窗口不一樣,其顯示位置也會有所差別。

十二、一些經常使用快捷方式:  

功能分類

快捷鍵

說明

File

(文件)

Ctrl+N

New新建工程

Ctrl+O

Open 打開文件

Find

(查找)

Alt+F3/Ctrl+F

彈出查找對話框

F3

查找下一個

Shift+F3

查找上一個

Ctrl+H

替換

Ctrl+]/Ctrl+E

尋找下一半括弧

F4

尋找下一個錯誤/警告位置

Shift+F4

尋找上一個錯誤/警告位置

格式

Ctrl+U

將選定區域轉換成小寫

Ctrl+Shift+U

將選定區域轉換成大寫

Alt+F8

自動格式重排

Build

(創建)

F7

Build(編繹並連接成exe文件)

Ctrl+F7

Compile(編譯)

Ctrl+F5

Execute(編譯+連接+運行)

Ctrl+Shift+F5

Restarts the program(從新運行程序)

Debug

(調試)

F5

Go(順序執行)

F11

step into (順序執行,進入循環或函數)

F10

step over(順序執行,不進入循環或函數)

Ctrl+F10

Run to cursor(自動執行到用戶光標所指的語句前)

Shift+F5

Stop Debugging(中止調試)

F9

Insert/Remove breakpoint(在當前行插入/去掉斷點)

Ctrl+Shift+F9

去掉全部斷點

相關文章
相關標籤/搜索