MFC Windows 程序设计(5)

来源:互联网 发布:网络暴利项目 编辑:程序博客网 时间:2024/05/17 03:14
 
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    管理使用指针作为项目或关键字的映射表
 
 
原创粉丝点击