天天看點

MFC Windows 程式設計(5)

  MFC 數組類 CArray 在頭檔案Afxtempl.h中定義。 非模闆化的數組類,分别為儲存特定類型的資料而設計。這些類在Afxcoll.h中定義。 CByteArray        BYTE 8位位元組 CWordArray       WORD 16位位元組 CDWordArray      DWORD 32位位元組 CUIntArray        UINT 無符号整型 CStringArray       CString CPtrArray          void指針 CObArray         CObject指針   動态調整數組大小 CUintArray array; Array.SetSize(10); //調整到20個 Array.SetSize(20); ★     使用SetSize調整,調整後原來的項仍然保持原來的值不變。 指派時使用SetAtGrow代替SetAt指派。SetAtGrow會在必要是自動增大資料的記憶體空間,Add,InsertAt,Append,Copy也是這樣。 ★     記憶體不足造成數組增大失敗,抛出的異常類型CMemoryException ★     SetSize也可以用來減少數組元素,但SetSize并不會自動縮小儲存數組資料的緩沖區,需要調用FreeExtra 釋放記憶體 Array.SetSize(50); Array.Setsize(30); Array.FreeExtra(); 使用模闆類 CArray CArray是一個模闆類,用它可以位任意的資料類型建立類型安全數組類,如為CPoint對象建立安全數組。 CArray<CPoint,CPoint&> array;//第一個參數指定了儲存在數組中的資料類型,第二個參數指定類型在參數清單中的表示方法 //指派 For(int i=0;i<10;i++) { Array.SetAtGrow(i,CPoint(i*10,0)); } //讀取 Int nCount = array.GetSize(); For(i=0;i<nCount;i++) { CPoint point=array[i]; } ★CArray模闆參數中可以使用任何種類的資料,甚至是自己建立的類 CList 模闆類 自定義類型的非模闆清單類 CObList     CObject指針 CPtrList     void指針 CStringList CStirng 因為CList是模闆類,是以CList和CArray一樣可以為任何資料類型建立安全清單 Typedef CList<CPoint,CPoint&> CPointList; CPointList list; 基于模闆的映射表類 CMap 特定類型的映射表類 CMapWordToPtr 儲存void指針,關鍵字為WORD CMapPtrToWord 儲存WORD,關鍵字為void指針 CMapPtrToPtr    儲存void指針,關鍵字為其他void指針 CMapWordToOb 儲存CObject指針,關鍵字為WORD CMapStringToOb CMapStringToPtr CMapStringToString   建立CPoint的對象集合,關鍵字為CString的映射表類 CMap<CString,CString&,CPoint,cPoint&> map; Map[CString(_T(“A”))]=CPont(0,0);//建立映射表資料 CPoint point; Map.Lookup(CString(_T(“A”)),point);//根據關鍵字查找映射表将值賦給參數,成功傳回TRUE。 類型指針類 MFC的類型指針類是一組三個模闆類,用來以安全的方式處理指針集合。 CTypedPtrArray    管理指針數組 CTypedPtrList      管理指針連接配接清單 CTypedPtrMap     管理使用指針作為項目或關鍵字的映射表