MFC编程基础
MFC編程基礎
一、MFC類庫概述
MFC(Microsoft Foundation class)微軟基本類(庫),有時候也有人叫做微軟基本類庫,因為它確實是一個類庫(物理上講),而且非常龐大;它也是一個面向?qū)ο蟮膽贸绦蚣軜嫞ㄟ壿嬌希绦騿T利用它可以很方便搭建應用程序框架。MFC結合了面向?qū)ο蟮木幊碳夹g和WINDOWS消息驅(qū)動的編程技術,并封裝了WIN32API,其設計好處:消除了WIN32API的復雜性,封裝了WIN32API,統(tǒng)一了程序的概念,而且可擴展。MFC由AFX項目小組進化而來,還有一些AFX代碼,如AfxMessageBox,AFxGetApp等。編寫MFC類庫的主要目的是為了軟件的復用。
查閱MSDN,簡單介紹CString類。
三、MFC基礎類簡介
MFC框架圖(太大,略,見MSDN)
1. 根類:CObject類
是大多數(shù)MFC中大多數(shù)類和用戶自定義類的根類,為程序員提供了進入所編寫程序的許多公用操作如:對象的建立和刪除,序列化支持,對象的診斷輸出等。
2. 應用程序結構類:
命令發(fā)送類(CCmdTarget):該類是CObject類的子類,是MFC中具有消息映射屬性類的基類。當對象接收到消息以后,消息映射調(diào)用相關聯(lián)的函數(shù)對消息進行處理。從他派生的類有:窗口類(CWnd)、應用程序類(CWinApp)、文檔類(CDoc)、視圖類(CView)以及框架窗口類(CFrameWnd)。
窗口應用程序類(CWinApp):每個應用程序只有一個應用程序?qū)ο螅谶\行程序中該對象和其他對象相互協(xié)調(diào)。
文檔/視圖類:文檔對象由文檔模板創(chuàng)建,管理應用程序的數(shù)據(jù)。視窗對象表示一個窗口的客戶區(qū),顯示文檔數(shù)據(jù)并允許用戶與之交互。
文檔模板類(CDocTemplate):文檔模板協(xié)調(diào)文檔、視圖和框架窗口的創(chuàng)建。
線程支持類(CWinThread):所有線程的基類,可直接使用。應用程序類(CWinApp)就是由他派生來的。
3. 可視對象類
窗口類(CWnd):提供了MFC所有窗口類的基本功能。創(chuàng)建窗口要分兩部分進行:首先引入構造函數(shù),構造一個CWnd對象;調(diào)用Create函數(shù)建立Windows窗口并將它連接到CWnd對象上。由他派生的子類有:框架窗口類:SDI應用程序主框架的基類、多文檔框架窗口類(CMDIFrameWnd):MDI應用程序主框架的基類、多文檔子對象類(CMDIChildWnd):MDI應用程序框架的基類。
視圖類(CView):管理框架窗口客戶區(qū)和顯示文檔數(shù)據(jù)并接收輸入的客戶區(qū)。由他派生的子類有:CScrollView類:具有滾動功能的視圖類、 CFormView類 :在對話資源中定義的滾動視圖類、CEditView 類:具有文本編輯,查找,替換和滾動功能的視圖類、CListView類:包含Windows列表控件的視圖類、 CTreeView類:包含樹形察看控件的視圖類。
菜單類(CMenu):Cobject的子類,用于管理菜單。
對話框類(CDialog):因為對話框是一個特殊的窗口,所以該類是從CWnd的派生類。由他派生出來的子類有:CFileDialog類:提供打開或保存一個文件所使用的對話框;CColorDialog 類:提供選擇顏色的標準對話框;CFontDialog類:同樣,它是用來提供選擇一種字體的標準對話框;CPrintDialog 類:提供打印一個文件的標準對話框;CFindReplaceDialog類:提供查找或替換的標準對話框;
4. 控件類
包括如下類,使用這些類可建立靜態(tài)文本、命令按鈕、位圖按鈕、列表框等。
CStatic類:靜態(tài)文本空間窗口,用于標注、分隔對話框和窗口中的其他控件;
CButton類:按鈕空間窗口,為對話框或窗口中的按鈕、檢查框或者單選框提供接口;
CEdit類:文本編輯對話窗口,用于接受用戶的文本輸入;
CScrollBar類:滾動條控件窗口,提供控制條的功能,用于對話框或窗口中的一個控件,通過它實現(xiàn)在一定范圍內(nèi)定位;
CRichEditCtrl類:多信息編輯控件;
CProgressCtrl類:進程指示控件窗口;
CCombBox類:組合框,由一個文本編輯控件和一個列表框組成;
CBitmapButton類:帶有位圖而非文字標題的按鈕;
CSpinButtonCtrl類:帶有雙箭頭按鈕,點擊某個箭頭用于增大或減小某個值;
CAnimateCtrl類:動畫顯示,用于顯示簡單的video圖像;
CToolTip類:一個小的彈出式窗口,用于提示應用程序中某個工具的作用;
CHotKeyCtrl類:使用戶創(chuàng)建一熱鍵,迅速地執(zhí)行某項操作;
CTreeCtrl類:樹形察看控件;
CListCtrl類:管理由圖標和標簽組成的列表項;
CHeaderCtrl類:顯示列標題或標簽。
5. 控件條類
指的是連接在主窗口框架頂部或底部的小窗口。他有以下相關的派生類:
CStatusBar類:狀態(tài)條控件窗口的基類;
CToolBar類:包含非基于HWND的位圖式命令按鈕的工具條控件窗口;
CDialogBar類:控制條形式的非模式對話框。
6. 繪圖工具類CDdiObject
包括一下派生類:
CBitmap類:封裝一個GDI位圖,提供操作位圖的接口;
CBrush類:封裝一個GDI畫刷,可被選擇為設備描述表的當前畫刷;
CFont類:封裝一個GDI字體,可被設備描述表的當前字體;
CPalate類:封裝一個GDI調(diào)色板,可被設備描述表的當前調(diào)色表;
CPen類:封裝一個GDI畫筆,可被設備描述表的當前畫筆;
7. 設備情景對象類CDC
是Cobject類的子類,和它的派生類支持設備情景對象。它的子類有:
CPaintDC類:設備情景對象類;
CClientDC類:窗口客戶區(qū)設備情景對象類,如響應鼠標點擊進行繪圖等;
CWindowsDC類:整個窗口的設備情景對象類;
CMetaFileDC類:元文件設備情景對象類。
8. 數(shù)據(jù)類型類
CString類:字符串類;
CTime類:存放絕對日期時間類;
COleDateTime類:封裝OLE自動化中使用的DATE數(shù)據(jù)類型,包含日期和時間;
CPoint類:存放坐標(x,y);
CSize類:存放距離或者相對位置;
CRect類:存放矩形區(qū)域的坐標,類似與windows的RECT;
9. 通用類
文件輸入/輸出類:CFile類和CArchive類
CFile類:提供訪問磁盤二進制文件的接口;
CMemFile類:提供訪問內(nèi)存文件的接口;
CStudioFile類:提供訪問緩存磁盤文件的接口;
CArchive類:與CFile類一起通過序列化實現(xiàn)對象的永久存儲;
10. 模板集合類
CArray類:提供任意的類型數(shù)組的模板類;
CList類:任意類型的列表模板類;
CMap類:映射任意關系類型的模板類;
CTypedPtrList類:負責將對象指針存入列表中;
CTypedPtrArray類:負責將對象指針存入數(shù)組中;
11. 異常類
是所有異常子類的基類。派生類有:
CArchiveException類:表示文檔序列化異常;
CFileException類:有關文件的異常;
CMemException類:內(nèi)存不足產(chǎn)生的異常;
CNotSupportedException類:使用不支持特性產(chǎn)生的異常;
CUseException類:停止用戶初始化操作的異常;
COleException類:表示于OLE有關的異常;
12. 調(diào)試支持類
CDumpContext類:提供診斷轉(zhuǎn)儲(diagnostic dump)目標;
CMemoryState類:表示內(nèi)存的使用狀態(tài)。
13. ODBC數(shù)據(jù)庫類
包括以下子類:
CDatabase類:封裝與數(shù)據(jù)源的鏈接,通過此鏈接應用程序可以在數(shù)據(jù)源上進行操作;
CRecordSet類:封裝一組從數(shù)據(jù)源選出的記錄集;
CRecordView類:提供直接鏈接記錄集對象的格式視圖;
14. OLE類
九個類組成層次結構分為三類
a、 OLE容器類
COleDocument類:用于實現(xiàn)復合文檔,是容器文檔的基類;
COleItem類:文檔項的基類;
COleException類:表示與OLE操作有關的異常情況;
COleClientDoc類和COleClientItem類為支持OLE的客戶類。
b、 OLE服務器類
COleServerDoc類:服務器應用程序文檔類基類;
COleServerItem類:表示與COleServerDoc類的接口;
COleTemplateServer類:創(chuàng)建由OLE可視編輯服務器、自動化服務器和鏈接容器使用的文檔。
c、 ActiveX控件類
COleControlModule類:用于開發(fā)ActiveX控件模塊對象,提供成員函數(shù)來初始化ActiveX控件模塊;
COleControl類:用于開發(fā)ActiveX控件;
CConnectionPoint類:用于定義與其它ActiveX對象通信的接口類型。
MFC的這些類本質(zhì)上都是對Win32對象的封裝,很多Win32對象都有對應的MFC類與之對應。如:
|
Win32對象 |
MFC類 |
Win32對象 |
MFC類 |
|
|
HWND |
CWnd |
HBRUSH |
CBrush |
|
|
RECT |
CRect |
HPEN |
CPen |
|
|
POINT |
CPoint |
HFONT |
CFont |
|
|
SIZE |
CSize |
HBITMAP |
CBitmap |
|
可以使用FromHandle函數(shù)將一個Win32對象轉(zhuǎn)換成MFC類對象。如:
static CWnd* PASCAL CWnd ::FromHandle( HWND hWnd );
static CDC* PASCAL CDC ::FromHandle( HDC hDC );
static CBrush* PASCAL CBrush::FromHandle( HBRUSH hBrush );
static CFont* PASCAL CFont::FromHandle(HFONT hFont);
Windows資源
凡是提供給Windows應用程序運行時,所使用到的東西統(tǒng)稱為資源。包括加速鍵、位圖、光標、對話框、圖標、菜單、字符串等等。在VC編寫相關Windows應用程序的時候在資源文件(Resource File)中都要對他們進行編輯,定義。
以下對四種比較常用的資源添加、使用舉例說明:
1、 加速鍵資源:也叫快捷鍵。方便用戶進行比較常見的應用程序操作。應用程序在進入消息循環(huán)之前調(diào)用LoadAccelerator(hInstance,(LPCTSTR)strTablename)加載加速鍵表(簡單的進行翻譯:某組合鍵在該應用程序中代表什么含義。)TranslateAccelerator(msg.hwnd, hAccelTable, &msg)
其中的ID代表某一個菜單的資源ID號,Key代表用戶自定義的組合鍵:Ctrl+?,Alt+?等。
2、 字符串資源:應用程序所使用到的字符串標識符,如對話框標題,提示給用戶的文本信息等等。使用方法:在字符串表(String Table)中定義相應的字符串資源,可以使用程序員需要的任何序言,在需要用到的時候使用LoadString加載他們既可。
3、 菜單資源:應用程序提供給用戶主要功能的體現(xiàn),也是應用程序窗口的重要組成部分。程序設計者可以根據(jù)需要進行訂制。使用方法:使用VC界面Resouce File界面中Menu項,進行菜單編輯并添加菜單處理函數(shù)。
4、 圖標資源:代表應用程序的位圖,可以進行繪制,在窗口的注冊函數(shù)中進行加載。
5、 對話框資源:特殊的窗口,放置控件等基本元素,方便用戶和應用程序進行交互。使用方法:添加對話框,放置控件以及編寫相關控件功能處理函數(shù)。
總結
- 上一篇: 网页中的flash动画怎样下载?网页fl
- 下一篇: 和硕董事长:下半年不会再受到过多库存的影