描述:
我在VC6 中生成的ATL simple object ,不管其接口是否为dual.
vc为我生成的调度代码总是这么一段:
IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
而且总是调用pDispatch->Invoke
请问这样说是不是只能用IDispatch 相关的接口 做为客户接口的基类?
我想用自已的接口行不行?
而VC为我在IDL中自动生成的代码,是以dispinterface 而不是以interface关键字生成的,那么
我在服务端还能改吗?
至少我在<COM原理及应用>一书中看到是可以用普通的interface实现的啊,难道那只是原理性的说明?如果真的要做,在VC6中还要自已改很多代码?
解决方案1:
你在新建一个ATL简单对象的时候
在ATL Object Wizard属性对话框中 不是两个Tab页吗?
一个是Names 就是接口的名字什么的,一个是Attributes页 你在这一页的Interface框框中选择Custom单选按钮,那它就是自定义接口了,而是dual属性了。
另外你直接在你的接口定义寓言中吧dual关键字删掉页可以的啊。不过建议采用前面那种方法。
不用dispinterface是一样的可以作为事件接口的。
你可以在你接口类上点击右键,在弹出的右键菜单中点击Implement Connection Point...然后选择你要实现的事件接口,这样VC就把连接点的相关代码给你加上去了。
您可能想查找下面的文章:
- 实现了IDispatch接口的组件和ActiveX控件用起来有什么不同呢?我觉得一样可以用在Web页面上,为什么ActiveX控件还要多实现那么多各种各样
- 实现了IDispatch接口的组建,用vbscript怎么调用?
- IDispatch::Invoke如何通过dispid调用方法?
- 关于idispatch和typelib
- 问个弱弱的问题:得到一个ActiveX控件的IDispatch指针后,如何使用?有没有与CListCtrl相同的ActiveX控件?
- MSFlexGrid有一个Picture属性,是一个IDispatch接口指针,请问如何操作?
- 请教COM,IDispatch相关问题!
- 制作弹出广告拦截器时碰到问题,关于OnNewWindow2IDispatchppDisp,BOOLCancel的
- [关于IDispatch问题]:如何将tlb文件编译进dll中?高分求救
- 请问一下:COM组件(TLB)中使用IDispatch和CoInitialize两种方法有何不同?谢谢啦

