c++ - 在 com 中创建字符串数组

标签 c++ arrays visual-c++ com mfc

我是 com 的新手,对 MFC 知之甚少,我们可以在 MFC 中使用 CStringArray 来收集字符串。在下面的 com 组件案例中,我很困惑如何在 com 中使用字符串。 以下是案例, 我正在开发 com 组件以及也在使用它,在我的 com 组件中以下是功能要求, 从 xml 文件中读取二维数组并将其转储到一个通用数组中,例如,

_bstr_t          bstrMember1Name,bstrMember2Name;
IEachData        portsDataNode;
while(portsDataNode = CollectionOfData->NextData())
{
    if (!GetStringAttribute(portsDataNode, _T("Member1"), bstrMember1Name))
    {
            hr = E_FAIL;
    }
    if (!GetStringAttribute(portsDataNode, _T("Member2"), bstrMember2Name))
    {
            hr = E_FAIL;
    }
 }

这是函数体,因为我从一个 com companant 调用中获取 Member1 和 Member2 作为返回类型,但我需要收集每个函数和值。那么函数的参数是什么?我如何将 Member1 和 Member2 收集到单个变量中?

最佳答案

对不起。我没有那样理解你的问题。如果你想返回一个数据集合(比如数组),你需要一个 SAFEARRAY。所以使用 SafeArrayCreate。如果它不只是 COM 并且您需要自动化,则必须使用 VARIANT 安全阵列。 SAFEARRAY 可以跨 COM 边界传递。 BSTR 的 SAFEARRAY 是可能的。还有多维数组

关于c++ - 在 com 中创建字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19130792/

相关文章:

c++ - Casteljau 算法 - 实例

c++ - 如何使用 CMake 将包包含在不同的目录中?

java - 使用 Apache POI 将 XLS 文件读取到 Java 中的二维数组中

javascript - 使用 javascript 计算指数移动平均线 (EMA)

visual-c++ - 错误 C4716 : function : must return a value

c++ - 安装 Visual Studio 2013 后的第一个构建错误。 fatal error LNK1561 : entry point must be defined

c++ - 我可以沙箱使用静态数据的命名空间吗?

c++ - MFC 网页浏览器控件 : How many (normal) lines of code does it take to simulate Ctrl+N?

javascript - 数组中相同的值必须放在一起

c++ - 如何使用 do modal 关闭对话框