使用MFC的数组类2010-11-04 vckbase 韩耀旭MFC的数组类支持的数组类似于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 <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);
}
}