ATL组件中的字节数组使用

在Windows编程中,MFC(Microsoft Foundation Classes)库为开发者提供了许多便利,特别是在处理日期、字符串和字节数组时。MFC通过其类封装自动处理内存分配和类型转换,从而简化了程序员的工作。然而,这种简化带来的副作用是必须随组件一起分发MFC DLL。本文将重点讨论在ATL组件中使用字节数组时遇到的问题,以及如何避免对MFC的依赖。

CCOMByteArray的创建

如果不在ATL组件中包含MFC支持,那么显然无法使用MFC的CByteArray。因此,编写了CCOMByteArray类,以提供MFC的CByteArray的功能,但无需依赖MFC。请注意,目前没有为内存分配函数包含异常处理。目前使用ATLASSERT宏来捕获任何内存分配错误,但这些在Release模式下会编译掉。这个功能以及性能改进将在未来的版本中添加。

当前版本的CCOMByteArray包括以下功能。请注意,如果下载的CCOMByteArray类中有任何未在以下文本中列出的函数,它们被认为是未记录的,因此可能也未经测试:

CCOMByteArray() - 构造一个空的字节数组。

CCOMByteArray(BYTE*, UINT) - 从指向BYTE数组的指针构造CCOMByteArray对象。

CCOMByteArray(BSTR&) - 从二进制字符串(即BSTR)构造CCOMByteArray对象。

CCOMString(BSTR) - 从BSTR构造CCOMByteArray对象。

GetSize() const - 返回字节数组的大小。

GetUpperBound() const - 返回字节数组的上界(即大小减一)。

SetSize(UINT, UINT) - 设置数组的大小以及增长因子。

RemoveAll() - 移除数组中的所有元素。

FreeExtra() - 释放数组当前未使用的任何额外分配的内存。

GetAt(UINT) const - 返回指定位置的字节。

ElementAt(UINT) - 返回指定位置的字节的引用。

SetAt(BYTE, UINT) - 将元素设置为指定位置的指定字节值。

GetData() const - 返回CCOMByteArray中包含的数组的指针。

Append(BYTE) - 将指定的字节添加到现有数组中。

Append(const CCOMByteArray&) - 将指定的CCOMByteArray添加到现有数组中。

Append(BYTE*, UINT) - 将指定的BYTE*数组添加到现有数组中。

Append(BSTR&) - 将指定的二进制字符串添加到现有数组中。

operator+=(CCOMByteArray&) - 与Append(CCOMByteArray&)具有相同的功能(见上文)。

operator+=(BYTE&) - 与Append(BYTE&)具有相同的功能(见上文)。

operator+=(BSTR&) - 与Append(BSTR&)具有相同的功能(见上文)。

InsertAt(UINT, BYTE, UINT) - 在指定位置插入指定字节,指定次数。

InsertAt(UINT, CCOMByteArray&) - 从指定位置开始插入指定的CCOMByteArray。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485