atl如何实现多个接口的?

phonlee 2002-07-01 12:33:22
请问用atl如何实现多个接口的
CoClass


我总是出错?
BEGIN_COM_MAP(Ctt)
COM_INTERFACE_ENTRY(Itt)
COM_INTERFACE_ENTRY(Itt1)
COM_INTERFACE_ENTRY(IDispatch) <---here
END_COM_MAP()
....
error C2594: 'static_cast' : ambiguous conversions from 'class Ctt *' to 'struct IDispatch *'
tt.cpp


请指教

多谢!!!
...全文
62 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
phonlee 2002-07-10
  • 打赏
  • 举报
回复
兄弟们, 我找到一个方法。
你直接用右键点击class view 中你的dsp,
选择new class , then select atl class, dual interface , set interface number to 3 or 6....

then u will got a multiinterface com


:)


i dont have time to test .

if someone find tha't ok, pls note here

:)


thnks a lot !!!!
chenybin 2002-07-09
  • 打赏
  • 举报
回复
upup:)
daehappy 2002-07-07
  • 打赏
  • 举报
回复
up!gz!
wangfei_x 2002-07-04
  • 打赏
  • 举报
回复
要在idl文件里修改:
加入新的接口定义
并在coclass里加入interface Itt1;
spidertan 2002-07-03
  • 打赏
  • 举报
回复
Up!
phonlee 2002-07-03
  • 打赏
  • 举报
回复
两个接口都是双接口
masterz 2002-07-02
  • 打赏
  • 举报
回复
sorry,
IDispatchImpl<IItt, &IID_IItt, &LIBID_MultiIfLib>::...
masterz 2002-07-02
  • 打赏
  • 举报
回复
sorry,
IDispatchImpl<IItt, &IID_IItt, &LIBID_MultiIfLib>::...
masterz 2002-07-02
  • 打赏
  • 举报
回复
class ATL_NO_VTABLE CMultiIf :
...
public IDispatchImpl<Itt, &IID_Itt, &LIBID_MultiIfLib>,
public IDispatchImpl<Itt1, &IID_Itt1, &LIBID_MultiIfLib>,
...
{
BEGIN_COM_MAP(Ctt)
COM_INTERFACE_ENTRY(Itt)
COM_INTERFACE_ENTRY(Itt1)
COM_INTERFACE_ENTRY2(IDispatch,Itt)
END_COM_MAP()

STDMETHODIMP Invoke(DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pvarResult,
EXCEPINFO* pExcepInfo,
UINT* puArgErr)
{
if (!pDispParams)
return E_INVALIDARG;
HRESULT hr;
hr=IDispatchImpl<IRPT2, &IID_IRPT2, &LIBID_ROGRPTVWLib>::Invoke(dispidMember,riid,lcid,wFlags,pDispParams,pvarResult,pExcepInfo,puArgErr);
if(hr!=S_OK)
IDispatchImpl<IRPT2UI, &IID_IRPT2UI, &LIBID_ROGRPTVWLib>::Invoke(dispidMember,riid,lcid,wFlags,pDispParams,pvarResult,pExcepInfo,puArgErr);
return S_OK;
}
...
}

//you need to edit idl file manually so that all dispids in interface Itt and Itt1 are unique(no duplication).
Lostinet 2002-07-01
  • 打赏
  • 举报
回复
类定义是否有继承:

public IDispatchImpl<Itt,&IID_Itt>

???
或者是直接继承IDispatch?
phonlee 2002-07-01
  • 打赏
  • 举报
回复
分少了可以在加!! :)

十万火急!!
ultraboy 2002-07-01
  • 打赏
  • 举报
回复
COM_INTERFACE_ENTRY(Itt)
COM_INTERFACE_ENTRY(Itt1)
这两个接口是不是都是双接口?那得指定一个缺省的双接口
COM_INTERFACE_ENTRY2(IDispatch, Itt)
phonlee 2002-07-01
  • 打赏
  • 举报
回复
类定义没有基层,
直接继承IDispatch

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧