參考: 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
4、MFC大體流程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函數調試
五、在程序入口函數main或WinMain加載前,系統已經爲全局變量或全局對象分配了存儲空間,併爲他們賦了初始值。對一個全局對象來講,此時就已經調用了該對象的構造函數,構造該對象,並進行初始化操做。
在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 |
去掉全部斷點 |