3,245
社区成员
发帖
与我相关
我的任务
分享
//idl
interface INEObj : IDispatch
{
[id(1), helpstring("方法 GetName")] HRESULT GetName([out] BSTR* _pStrName);
}
interface INEVend : INEObj
{
[id(2), helpstring("方法 GetType")] HRESULT GetType([out] BSTR* _pStrType);
}
//接口实现类
class CVendorObj :
public CComObjectRootEx<CComSingleThreadModel>,
public IDispatchImpl<INEVend, &IID_INetVend, &LIBID_NETLib>
{
......
BEGIN_COM_MAP(CVendorObj)
COM_INTERFACE_ENTRY(INEVend)
COM_INTERFACE_ENTRY(INEObj)
END_COM_MAP()
STDMETHOD(GetName)(BSTR* _pStrName);
STDMETHOD(GetType)(BSTR* __pStrType);
}
//客户端调用
INEObj *pNetObj = NULL;
INEVend *pVendor = NULL;
hr = pVendorList->Item(i,(INEObj **)&pNetObj);
if( SUCCEEDED(hr) )
{
hr = pNetObj->QueryInterface(IID_INetVend,(void**)pVendor);
//此时的hr返回值为 E_INVALIDARG
......
}