例如,在使用CDO的时候,Session有一个方法定义如下:_variant_t GetAddressList (const _variant_t & ObjectType );要将返回结果转换为AddressList, AddressList定义如下:struct __declspec(uuid("3fa7deaf-6438-101b-acc1-00aa00423326"))
AddressList : IDispatch
{
//
// Property data
//
//...
}
没有用过COM, 望指点迷津,谢谢!
AddressList : IDispatch
{
//
// Property data
//
//...
}
没有用过COM, 望指点迷津,谢谢!
解决方案 »
- VC如何判断USB设备是否向上位机发送数据?谢谢!!
- 如下代码绘制铁路为何绘制两次不能删除
- 各位大虾用Windows API从ftp下载文件的过程是什么样的啊?
- 学习中遇到的迷惑:关于调试一个简单的com服务器DLL
- 求助:.pdb文件缺失?!
- 求教:在在模式对话框BOOL CXXX::OnInitDialog()中InitSocket()初始化失败,怎样退出该模式对话框
- vc2005运行vc6程序时出错,error LNK2019: 无法解析的外部符号
- 请教一个CListView的问题
- Windows函数 _lread和_hread有什么区别 我觉得是一样吧?
- 如何让程序最小化后成一个小图标?
- 关于DATAGRID的错误
- vc中获取控件位置,老是不正确,盼各位大侠指点
VARIANT vRet, vParam;
VariantInit(&vRet);
VariantInit(&vParam);V_VT(&vParam) = VT_INT;
V_INT(&vParam) = 1;
vRet = session.GetAddressList(vParam);
// 到这里的时候,vRet.vt == VT_DISPATCH, vRet.pdispVal = 0x02000388;
SessionPtr session;
AddressListPtr al = session->getAddressList();
直接赋值就可以了。
_com_ptr_t(const _variant_t& varSrc)
: m_pInterface(NULL)
{
HRESULT hr = QueryStdInterfaces(varSrc); if (FAILED(hr) && (hr != E_NOINTERFACE)) {
_com_issue_error(hr);
}
}具体内部实现是在QueryStdInterfaces中完成的。
谢谢阿荣,qiangqiang的关注。结贴,散分。