MFC的ActiveX,要加入自定义类的支持,该怎么做?

时间:2022-08-02 09:00:40
现在在写一个基于MFC的ActiveX,其中涉及到接口函数要传递自定义的类对象

在工程里面使用向导添加了一个自动化的类COrder,继承自CCmdTarget,客户端ID是Test.Order

但是VBS里面使用Set obj = CreateObject("Test.Order")报错,无法创建对象

查了资料,说是要支持双接口才可以,但是怎么修改才能支持双接口?

有没有可以参考的代码?

非常感谢

12 个解决方案

#1


http://www.vckbase.com/document/viewdoc/?id=1506
这篇文章中介绍了如何实现双接口。

#2


引用 1 楼 happyparrot 的回复:
http://www.vckbase.com/document/viewdoc/?id=1506
这篇文章中介绍了如何实现双接口。


学习

#3


引用 1 楼 happyparrot 的回复:
http://www.vckbase.com/document/viewdoc/?id=1506
这篇文章中介绍了如何实现双接口。


我就是照着这个文章做的,但还是没效果,查资料说是要改成dual interface,但是找不到相关文章和代码

#4


搜索TN038
也可以在控件中声明一个方法来创建新的对象,不必非要一个CLSID

#5


帮顶

#6


学习

#7


引用 4 楼 jiangsheng 的回复:
搜索TN038
也可以在控件中声明一个方法来创建新的对象,不必非要一个CLSID


可以在JS里面创建ActiveX里面的自动化对象了,但是在JBS里面改了对象属性后,再传到ActiveX,发现对象的属性都消失了,象是ID,本来在JS里面显示都是101,但是再传递到ACTIVEX里面,发现ID成了-8XXXXXXX,这个怎么解决?

#8


估计是有无符号的问题,估计是js传过来的数据是无符号的数据,而你使用无符号数据来获取,这可能出错.

#9


引用 8 楼 tttyd 的回复:
估计是有无符号的问题,估计是js传过来的数据是无符号的数据,而你使用无符号数据来获取,这可能出错.


不光是数字类型,字符串类型干脆显示《指针错误》,所有属性都一样

我是用IDISPATCH* 从ActiveX创建内置自动化对象->JS接收(JS接收后,对象属性都是正确的)-> JS修改对象属性->ActiveX(这一步就出现问题了,ActiveX可以接收到对象,可以从IDISPATCH*强制转换为Entity*,但是属性全部丢失了)

是因为COM对象在ActiveX和JS之间传递,被意外释放掉了么,但是我在从ActiveX->JS传递IDISPATCH*的时候,是使用GetIDISPATCH(TRUE)传递的,应该是AddRef了的

#10


那你进入调试状态,单步调试,看一下是什么错误了

#11


帮顶,UP

#12


使劲顶起  

#1


http://www.vckbase.com/document/viewdoc/?id=1506
这篇文章中介绍了如何实现双接口。

#2


引用 1 楼 happyparrot 的回复:
http://www.vckbase.com/document/viewdoc/?id=1506
这篇文章中介绍了如何实现双接口。


学习

#3


引用 1 楼 happyparrot 的回复:
http://www.vckbase.com/document/viewdoc/?id=1506
这篇文章中介绍了如何实现双接口。


我就是照着这个文章做的,但还是没效果,查资料说是要改成dual interface,但是找不到相关文章和代码

#4


搜索TN038
也可以在控件中声明一个方法来创建新的对象,不必非要一个CLSID

#5


帮顶

#6


学习

#7


引用 4 楼 jiangsheng 的回复:
搜索TN038
也可以在控件中声明一个方法来创建新的对象,不必非要一个CLSID


可以在JS里面创建ActiveX里面的自动化对象了,但是在JBS里面改了对象属性后,再传到ActiveX,发现对象的属性都消失了,象是ID,本来在JS里面显示都是101,但是再传递到ACTIVEX里面,发现ID成了-8XXXXXXX,这个怎么解决?

#8


估计是有无符号的问题,估计是js传过来的数据是无符号的数据,而你使用无符号数据来获取,这可能出错.

#9


引用 8 楼 tttyd 的回复:
估计是有无符号的问题,估计是js传过来的数据是无符号的数据,而你使用无符号数据来获取,这可能出错.


不光是数字类型,字符串类型干脆显示《指针错误》,所有属性都一样

我是用IDISPATCH* 从ActiveX创建内置自动化对象->JS接收(JS接收后,对象属性都是正确的)-> JS修改对象属性->ActiveX(这一步就出现问题了,ActiveX可以接收到对象,可以从IDISPATCH*强制转换为Entity*,但是属性全部丢失了)

是因为COM对象在ActiveX和JS之间传递,被意外释放掉了么,但是我在从ActiveX->JS传递IDISPATCH*的时候,是使用GetIDISPATCH(TRUE)传递的,应该是AddRef了的

#10


那你进入调试状态,单步调试,看一下是什么错误了

#11


帮顶,UP

#12


使劲顶起