1. 程式人生 > >MFC基礎類庫總結

MFC基礎類庫總結

Microsoft  基礎類庫

MFC 的文件包括對類的引用,全域性函式,全域性變數和巨集組成該庫,再加上由MFC開發團隊收集書面的技術說明.

 MFC Reference (MFC 參考)
 MFC Technical Notes (MFC 技術說明)
 MFC Sample Programs (MFC 示例程式)
 Hierarchy chart (層次結構圖)
 Hierarchy chart categories (類層次結構圖)
 About the MFC classes (關於MFC類)

有趣的主頁:

 Visual C++ Home (Visual C++ 首頁)
 Adding User-Interface Features (新增使用者介面功能)
 Adding Program Functionality (新增程式功能)
 Active Template Library (ATL) (活動模板庫(ATL))
 OLE DB Templates (OLE DB 模板)


可視物件類:
 1視窗類:CWnd類
   CWnd提供了MFC中所有視窗類的基本功能,是CCmdTarget類的子類
   建立Windows視窗要分兩步進行(1引入建構函式,構造一個CWnd物件2呼叫Create建立視窗並將它連線到CWnd物件上)
 2視類:CView類
  該類表示框架視窗的客戶區和顯示文件資料並接受輸入的客戶區其派生類主要有如下幾種:
   CScrollView :具有滾動功能的視的基類
   CFormView:其佈局再對話資源中定義的滾動
   CEditView:具有文字編輯、查詢、替換和滾動功能的視
 3選單類:CMenu類
  該類是CObject類的子類,用於管理選單,它是一個Windows HMenu的封裝,提供了與視窗有關的選單資源建立、修改、跟蹤及刪除的成員函式。
 4對話方塊類:CDialog類


   由於對話方塊是一個特殊的視窗,所以該類是從CWnd類中派生出來的。對話方塊子層次結構包括通用對話方塊類CDialog以及支援檔案選擇、顏色選擇、字型選擇、列印、替換文字的公共對話方塊子類。
 5控制元件類
 控制元件子層次結構包括若干類,使用這些類可以建立靜態文字、命令按鈕、點陣圖按鈕、列表框、組合框、滾動條、編輯框等。這些直觀控制元件為Windows應用程式提供了各種輸入和顯示介面。
 6控制元件條類:CControlBar類
  控制元件條子層次結構為工具條、狀態條、對話條和分割視窗建立模型。該類是CToolBar、CStatusBar、CDialogBar的基類,負責管理工具條、狀態條、對話條的一些成員函式。控制元件條指的是連線在主視窗框架的頂部或底部的小視窗。
 7繪畫物件類:CGdiObject類

  圖形繪畫物件子層次結構以CGdiObject類為跟類,可用於建立繪畫物件模型,如畫筆、刷子、字型、點陣圖、調色盤等。
 8裝置描述表類:CDC類
  該類及其子類支援裝置描述表物件,是CObject類的子類。CDC類是一個較大的類,包括許多成員函式,如對映函式、繪畫工具函式、區域函式等,通過CDC物件的成員函式可以完成所有的繪圖工作。

 通用類
 此類提供了許多通用服務,例如檔案I/O 、診斷和異常處理等。此外還包括如陣列和列表等存放資料集的類
 1.檔案類: CFile 和 CArchive類 用以編寫輸入輸出處理函式
 2.異常類:CException類 是所有異常情況的基類不能直接建立CException物件,只能建立派生類的物件,用派生類來捕獲指定的異常情況。
 3.模板收集類
 這些類可以將多種物件存放到陣列、列表和“對映”中但這些收集類是模板,它們的引數確定了存放集合中的物件型別。

OLE類
 物件連線與嵌入子層次結構為支援OLE提供了9個類
 普通類 COleDocuemnt 、COleItem、COleException
 客戶類 COleClientDoc 、COleClientItem
 伺服器類 COleServer、COleTemplate、COServerDoc、COServerItem

ODBC資料庫類
 開放資料庫連線連線子層次結構提供了一些類來支援ODBC特徵,即開通過這些類可開發資料庫應用程式來訪問多個數據庫檔案。

MFC中全域性函式與全域性變數
以Afx開頭的函式除資料庫類函式和DDX(Dialog Data Exchange)函式外,在目前的版本中,都表示是一個全域性函式。以Afx為字首的變數都是全域性變數。
 函式                 功能
AfxAbort                 無條件終止一個應用程式
AfxBeginThread           建立一個新程序並執行他
AfxEndThread             終止當前正在執行的程序
AfxFormatString          格式化字串
AfxMessageBox            顯示一個Windows訊息框
AfxGetApp                返回當前應用程式物件的指標
AfxGetInstanceHandle     返回標識當前對應程式物件的控制代碼
AfxRegisterWndClass      登記用於建立Windows視窗的視窗類

=====================================================================================================================
=====================================================================================================================
=====================================================================================================================
製作含編輯框的應用程式
編輯框在Windows風格的應用程式中是隨處可見的 ,當需要獲得來自使用者的文字資訊,或者要讓使用者輸入或編輯文字時,應該使用編輯控制元件。

編輯框控制元件簡介
  編輯框控制元件具有許多功能,Windows中的記事本(Notepad)應用程式就是一個帶有控制元件選單的編輯框控制元件
 
  編輯框控制元件(單行編輯框控制元件,多行編輯框控制元件)

CEdit 的層次結構
  +-CObject
    +-CCmdTarget
     +-CWnd
      +-CEdit
 編輯框控制元件類CEdit的結構很複雜,當建立CEdit物件時,MFC自動賦予該物件一個標準的Windows編輯控制元件它定義了CEdit物件。
 CEdit所在的標頭檔案 Afxwin.h

  1.class CEdit::public CWnd
  2.{DECLARE_DYNAMIC(CEdit)
  //定義建構函式
  3.public;
  4.CEdit();
  5.BOOL Create(DWORD) dwStyle,const RECT&rect, CWnd*pParentWnd,UINT nID);
//成員函式
  6.BOOL CanUndo() const;
  7.int GetLineCount() const;
  8.BOOL GetModify() const;
  9.void SetModify(BOOL bModified=TRUE);
  10.void GetRect(LPRECT IpRect) const;
  11.DWORD GetSel() const;
  12.void GetSel(int& nStartChar,int& nEndChar) const;
  13.HLOCAL GetHandle() const;
  14.void SetHandle(HLOCAL hBuffer);
 //剪貼簿操作
  BOOL Undo();
  void Clear();
  void Copy();
  void Cut();
  void Paste();

  BOOL SetReadOnly(BOOL bReadOnly = TRUE);
  int GetFirstVisibleLine() const;
  TCHAR GetPasswordChar() const;
 
 //Implementation
 public: Virtual ~CEdit(); //虛擬解構函式
};
 
通用CEdit類的方法
方法     說明
CanUndo()    決定一個編輯操作是否可以撤銷
Clear()     從編輯控制元件中刪除當前的選擇(如果有的話)
Copy()                    將編輯控制元件當前的選擇(如果有的話)以CF_TEXT格式賦值到剪下板中
Cut()     剪下編輯控制元件中的當前選擇(如果有的話)並以CF_TEXT 格式複製到剪下板中
EmptyUndoBuffer()   消除一個編輯控制元件的“撤銷”標誌
GetFirstVisibleLine()     確定編輯控制元件中的最上面的可視行
GetModify()               確定一個編輯控制元件的內容是否可修改
GetPasswordChar()         當前使用者輸入文字是,獲得編輯控制元件中顯示的密碼字元
GetRect()                 獲得一個編輯控制元件的格式化矩形
GetSel()                  獲得編輯控制元件中當前選擇的開始和結束字元位置
LimitText()               限定使用者可能輸入一編輯控制元件的文字長度
LineFromChar()            獲得包含指定字元下標的行的行號
LineLength()              獲得編輯控制元件中的一行的長度
LineScroll()              滾動多行編輯控制元件的文字
Paste()                   將剪貼簿的資料插入到編輯控制元件作當前的游標位置,只有當前剪下板中資料格式為CE_TEXT是方可插入
ReplaceSel()              用指定文字替代編輯控制元件中當前選擇的部分
SetModify()    設定或清除編輯控制元件的修改標誌
SetPasswordChar()         當用戶輸入文字時設定或刪除一個顯示與編輯控制元件中的密碼字元
SetReadOnly()    將編輯控制元件設定為只讀狀態
SetSel()                  再編輯控制元件中選擇字元的範圍
Undo()                    取消最後一個編輯控制元件操作
  
多行編輯所支援的CEdit法
方法   說明
FmtLines()              設定在多行編輯控制元件中包含軟體分行符
GetHandle()   獲得當前分配給一個多行編輯控制元件的記憶體的控制代碼