Welcome

首页 / 软件开发 / C++ / 使用MFC的数组类

使用MFC的数组类2010-11-04 vckbase 韩耀旭MFC的数组类支持的数组类似于C++中的常规数组,可以存放任何数据类型。的常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,而MFC数组类创建的对象可以根据需要动态地增大或减小,数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的地址仍然是连续分配的。

MFC定义了数组模板类CArray,并针对各种常用变量类型定义了CByteArray,CWordArray,CUIntArray,CDWordArray,CStringArray,CObArray,CPtrArray。详见下表:

数组类变量类型变量数值范围头文件
CArray通过模板类的参数类型设定各种类型 Afxtempl.h
CByteArray8位无符号整数 BYTE类型0—255Afxcoll.h
CWordArray16位无符号整数 WORD类型0—65535Afxcoll.h
CDWordArray32位无符号整数 DWORD类型0—4294967295Afxcoll.h
CUIntArray32位无符号整数 UINT类型0—4294967295Afxcoll.h
CStringArrayCString字符串 string字符串 Afxcoll.h
CObArrayCObject类及其派生类 Afxcoll.h
CPtrArrayvoid* 类型指针 Afxcoll.h
MFC数组类使用方法基本相同,下面分别以CArray和CUIntArray为例演示说明数组类的使用方法。

使用 CArray

打开VC++ 6.0,创建基于对话框的工程Array。CArrayDlg类声明文件(ArrayDlg.h)中添加语句:

#include <afxtempl.h>

请记住:使用CArray一定要包含头文件afxtempl.h。

打开主对话框资源IDD_ARRAY_DIALOG,添加一个按钮IDC_ARRAY_CPOINT,标题为CArray_CPoint,双击该按钮,在OnArrayCpoint()函数中添加如下代码:void CArrayDlg::OnArrayCpoint()
{
CArray <CPoint,CPoint&> 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<size;i++)
{
pt=m_Array.GetAt(i);
dc.LineTo(pt);
}
}