非 MFC ByteArray 类用于 ATL





0/5 (0投票)
2001年5月1日
3分钟阅读

47754

1071
用于 ATL 组件的非 MFC ByteArray 类
引言
在编写 ATL 组件时,我发现 Windows 程序员最难克服的问题之一是对 MFC 库的依赖。 对于日期、字符串和字节数组,MFC 通过在其类封装中处理内存分配和类型转换来简化程序员的工作。 但是,这种简化带来的代价是必须将 MFC DLL 与您的组件一起分发。
本文重点介绍在 ATL 组件中使用字节数组的相关问题。 如果您的 ATL 组件中不包含 MFC 支持,那么您显然无法使用 CByteArray。 因此,我编写了 CCOMByteArray 来提供 MFC 的 CByteArray 的功能,但没有 MFC 依赖性。 请注意,我目前不包括内存分配函数的异常处理。 我目前正在使用 ATLASSERT 宏来捕获任何内存分配错误,但这些将在发布模式下编译掉。 此功能以及性能改进将添加到未来的版本中。
当前版本的 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)
- 将元素设置为指定位置的指定字节值。
访问器
GetAt(UINT) const
- 返回位于指定位置的字节。Operator[](UINT)
- 与 GetAt(UINT) 具有相同的功能(参见上文)。ElementAt(UINT)
- 返回对位于指定位置的字节的引用。SetAt(BYTE, UINT)
- 将元素设置为指定位置的指定字节值。
直接访问
GetData() const
- 返回指向 CCOMByteArray 中包含的数组的指针。
扩展数组
Append(BYTE)
- 将指定的字节添加到现有数组。Append(const CCOMByteArray&apm;)
- 将指定的 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。RemoveAt(UINT, UINT)
- 删除指定位置的指定计数的元素。