Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16499636
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:30:27

下载本文示例代码
  MFC的数组类支持的数组类似于C 中的常规数组,可以存放任何数据类型。C 的常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,而MFC数组类创建的对象可以根据需要动态地增大或减小,数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的地址仍然是连续分配的。  MFC定义了数组模板类CArray,并针对各种常用变量类型定义了CByteArray,CWordArray,CUIntArray,CDWordArray,CStringArray,CObArray,CPtrArray。详见下表: 数组类 变量类型 变量数值范围 头文件 CArray 通过模板类的参数类型设定各种类型 Afxtempl.h CByteArray 8位无符号整数 BYTE类型 0—255 Afxcoll.h CWordArray 16位无符号整数 WORD类型 0—65535 Afxcoll.h CDWordArray 32位无符号整数 DWORD类型 0—4294967295 Afxcoll.h CUIntArray 32位无符号整数 UINT类型 0—4294967295 Afxcoll.h CStringArray CString字符串 string字符串 Afxcoll.h CObArray CObject类及其派生类 Afxcoll.h CPtrArray void* 类型指针 Afxcoll.h  MFC数组类使用方法基本相同,下面分别以CArray和CUIntArray为例演示说明数组类的使用方法。  使用 CArray   打开VC 6.0,创建基于对话框的工程Array。CArrayDlg类声明文件(ArrayDlg.h)中添加语句: #include   请记住:使用CArray一定要包含头文件afxtempl.h。   打开主对话框资源IDD_ARRAY_DIALOG,添加一个按钮IDC_ARRAY_CPOINT,标题为CArray_CPoint,双击该按钮,在OnArrayCpoint()函数中添加如下代码: void CArrayDlg::OnArrayCpoint() { CArray m_Array; m_Array.SetSize(10,10); CPoint pt1(10,10); m_Array.Add(pt1); CPoint pt2(10,50); m_Array.Add(pt2); CPoint pt3(10,100); m_Array.Add(pt3); int size=m_Array.GetSize(); CClientDC dc(this); dc.MoveTo(0,0); CPoint pt; for(int i=0;i m_Array;  该语句定义一个CArray数组对象,模板类CArray有两个参数,第一个参数为数组元素的类型,该例中是CPoint,即m_Array是CPoint数组;第二个参数为引用类型,一般有两种选择,一种选择与第一个参数类型相同,它意味着数组对象作为参数传递时,传递的是数组对象。第二种选择是第一个参数类型的引用,它意味着数组对象作为参数传递时,传递的是数组对象的指针。因此,尤其对于较复杂的数组结构类型,推荐使用引用传递,节约内存同时加快程序运行速度,正如本例使用的是CPoint&。 m_Array.SetSize(10,10);  SetSize函数设定数组的大小,该函数有两个参数,第一个参数设定数组的大小;第二个参数设定数组增长时内存分配的大小,缺省值是-1,使用缺省值可以保证内存分配得更加合理。本例中第二个参数是10,意即增加一个数组元素会分配10个元素大小的内存供数组使用。   您可以随时使用SetSize函数设定数组的大小,如果第一个参数值小于数组已有成员数量,多于第一个参数值的成员将被截去并释放相应内存。   在使用CArray数组前,最好先使用SetSize确定其大小并申请存储空间。如果不这样做,向数组中增加元素时,需要不断地移动和拷贝元素造成运行的低效率和内存碎块。 m_Array.Add(pt1);  Add函数添加数组元素。 int size=m_Array.GetSize();  GetSize返回数组元素的数目。 for(int i=0;i   MFC的数组类支持的数组类似于C 中的常规数组,可以存放任何数据类型。C 的常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,而MFC数组类创建的对象可以根据需要动态地增大或减小,数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的地址仍然是连续分配的。  MFC定义了数组模板类CArray,并针对各种常用变量类型定义了CByteArray,CWordArray,CUIntArray,CDWordArray,CStringArray,CObArray,CPtrArray。详见下表: 数组类 变量类型 变量数值范围 头文件 CArray 通过模板类的参数类型设定各种类型 Afxtempl.h CByteArray 8位无符号整数 BYTE类型 0—255 Afxcoll.h CWordArray 16位无符号整数 WORD类型 0—65535 Afxcoll.h CDWordArray 32位无符号整数 DWORD类型 0—4294967295 Afxcoll.h CUIntArray 32位无符号整数 UINT类型 0—4294967295 Afxcoll.h CStringArray CString字符串 string字符串 Afxcoll.h CObArray CObject类及其派生类 Afxcoll.h CPtrArray void* 类型指针 Afxcoll.h  MFC数组类使用方法基本相同,下面分别以CArray和CUIntArray为例演示说明数组类的使用方法。  使用 CArray   打开VC 6.0,创建基于对话框的工程Array。CArrayDlg类声明文件(ArrayDlg.h)中添加语句: #include   请记住:使用CArray一定要包含头文件afxtempl.h。   打开主对话框资源IDD_ARRAY_DIALOG,添加一个按钮IDC_ARRAY_CPOINT,标题为CArray_CPoint,双击该按钮,在OnArrayCpoint()函数中添加如下代码: void CArrayDlg::OnArrayCpoint() { CArray m_Array; m_Array.SetSize(10,10); CPoint pt1(10,10); m_Array.Add(pt1); CPoint pt2(10,50); m_Array.Add(pt2); CPoint pt3(10,100); m_Array.Add(pt3); int size=m_Array.GetSize(); CClientDC dc(this); dc.MoveTo(0,0); CPoint pt; for(int i=0;i m_Array;  该语句定义一个CArray数组对象,模板类CArray有两个参数,第一个参数为数组元素的类型,该例中是CPoint,即m_Array是CPoint数组;第二个参数为引用类型,一般有两种选择,一种选择与第一个参数类型相同,它意味着数组对象作为参数传递时,传递的是数组对象。第二种选择是第一个参数类型的引用,它意味着数组对象作为参数传递时,传递的是数组对象的指针。因此,尤其对于较复杂的数组结构类型,推荐使用引用传递,节约内存同时加快程序运行速度,正如本例使用的是CPoint&。 m_Array.SetSize(10,10);  SetSize函数设定数组的大小,该函数有两个参数,第一个参数设定数组的大小;第二个参数设定数组增长时内存分配的大小,缺省值是-1,使用缺省值可以保证内存分配得更加合理。本例中第二个参数是10,意即增加一个数组元素会分配10个元素大小的内存供数组使用。   您可以随时使用SetSize函数设定数组的大小,如果第一个参数值小于数组已有成员数量,多于第一个参数值的成员将被截去并释放相应内存。   在使用CArray数组前,最好先使用SetSize确定其大小并申请存储空间。如果不这样做,向数组中增加元素时,需要不断地移动和拷贝元素造成运行的低效率和内存碎块。 m_Array.Add(pt1);  Add函数添加数组元素。 int size=m_Array.GetSize();  GetSize返回数组元素的数目。 for(int i=0;i 下载本文示例代码


MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析MFC中数组类的使用分析
阅读(74) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~