【发布时间】:2011-03-08 16:10:10
【问题描述】:
我必须设置 COM 对象的属性。
COM 对象有一个Set 函数,它接受一个键(字符串)和一个值(变量)作为参数。例如我可以这样做:com_object->Set("name", "John").
我有很多属性要设置,但我不知道如何在 C++ 中进行设置。在 VB.Net 中它看起来像这样:
com_object.Set "name,age", Array("M2", 1)
我想在 C++ 中做同样的事情,但我不知道语法。
编辑
这是我编写的用于批量访问属性的代码:
template < class ComObjectType >
void read(ComObjectType com_object, std::string const& fields)
{
COleSafeArray data_array_;
data_array_ = com_object->GetGet((LPCSTR)fields.c_str());
long index = 0;
VARIANT value_temp_;
_variant_t value_reader_;
data_array_.GetElement(&index, &value_temp_);
value_reader_.Attach(value_temp_);
std::string str1 = (LPCSTR)((_bstr_t) value_reader_)
++index
data_array_.GetElement(&index, &value_temp_);
value_reader_.Attach(value_temp_);
long long1 = value_reader_.lVal;
}
然后我调用这个函数(它实际上并没有做太多,只是用于演示。IAPIOrderObj* 可以是任何东西,但它是在我提供的 API 的 .tlh 文件中定义的,它继承来自 IDispatch 接口。
MYAPI::IAPIOrderObj* my_obj;
read< IAPIOrderObj* >(my_obj, "StatusString,StatusCode");
【问题讨论】:
-
你使用 VS2010 吗?
com_object的定义如何?
标签: c++ visual-c++ com