AlexXXX 2002年05月28日
我想写一个简单的IDispatch接口,有一些问题请教(似乎比较难)
我的设想:
在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类型以外,有没有能够包容大多数类型的结构?
...全文
44 点赞 收藏 5
写回复
5 条回复

还没有回复,快来抢沙发~

发动态
发帖子
ATL
创建于2007-09-28

3021

社区成员

4.8w+

社区内容

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区公告
暂无公告