我想写一个简单的IDispatch接口,有一些问题请教(似乎比较难)

AlexXXX 2002-05-28 09:51:45
我的设想:
在Win32 Dynamic-Link Library中
定义一个纯虚类,其内有Invoke函数,类似IDispatch接口中的Invoke,但是只有输入和输出参数完全相同,其他参数砍掉。
继承这个纯虚类的子类:在构造函数中给实现具体功能的类的方法编号(ID),制作一个ID和方法的函数指针的对应表;实现Invoke函数,在Invoke中的实现是一个根据ID号的switch,根据ID和函数指针对照表执行方法。

在这种情况下,我们的dll只需要引出一个API——CreateInstance,其功能是new一个子类,将子类的指针赋给那个纯虚父类,屏蔽掉真实实现细节。
在调用时,我们需要事先知道函数的ID,不需要GetIDsOfNames函数,我知道这样不太好,但是这样可以节约执行时间——是不是?

实现方式完全基本上使用STL,尽量不使用微软的东西。

我现在的问题是:1、学识所限,底气不足,各位大虾,这招是否可行?
2、有人说使用DISPPARAMS类型和VARIANT类型,执行时很耗时间,是否如此?
3、使用Invoke,统一,通用的调用方法,有没有好点的参数类型,我是说除了DISPPARAMS类型和VARIANT类型以外,有没有能够包容大多数类型的结构?
...全文
93 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
RedFire 2002-06-03
  • 打赏
  • 举报
回复
如果你不想用DISPPARAMS类型和VARIANT类型,也许你可以自定义一个联合,估计效果也差不多。
arxing 2002-06-03
  • 打赏
  • 举报
回复
留下email,我这里有例子。
fantong 2002-06-03
  • 打赏
  • 举报
回复
如果你是学生,go go go
工作了,疯了,你还吃饭不了?
ComeAlong 2002-06-01
  • 打赏
  • 举报
回复
多此一举
dyugao 2002-05-28
  • 打赏
  • 举报
回复
学习

3,248

社区成员

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

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