65.9K
CodeProject 正在变化。 阅读更多。
Home

非 MFC ByteArray 类用于 ATL

2001年5月1日

3分钟阅读

viewsIcon

47754

downloadIcon

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) - 删除指定位置的指定计数的元素。
© . All rights reserved.