在建立Automation Object时出现的问题。急,在线等待 (50分)

  • 主题发起人 主题发起人 cb422
  • 开始时间 开始时间
C

cb422

Unregistered / Unconfirmed
GUEST, unregistred user!
问题1:
我在一个接口中新建了一个method,指定它的返回值为double,但是每次在保存该项目时
都提示错误:Funtitons of Automation Interfaces must have a return type of HRESULT
不知道是什么原因,难道在AutoMation Interfaces中定义函数只能指定返回值为HRESULT吗?
问题2:
我在实现自动化现成的应用程序时,新建一个名为Text的Read/write的属性,在指定Text的
类型时用IStrings,但是每次在保存时都提示错误:out parameter requires pointer type
我在Text的Write属性的Parameters标签中察看类型,的确是IStrings *类型,不知道是什么
原因?
 
只能返回 HRESULT 值 S_OK 来判断Dispatch调用是否成功,想要返回其它的值,请使用参数
 
添加一个out型的参数,本身method的返回值改回hResult就行了
 
添加一个out型的参数需要pointer类型,但是好像没有double *,我不知道选什么类型?
 
你直接在里面输入进去就可以了
 
用 Variant *
 
你的接口函数做错了,不要改返回值。
 
to cb422:

你这个问题,我以前遇到过,并且向一些高手求教过的。确实,
在COM 接口函数中,只能返回Hresult 类型的值,这是为了与 COM 的API
兼容。因为微软的 COM 是用 C来实现的。函数的返回结果就是HRESULT 类型的。
如果要返回一个指定的类型,添加一个out型的参数,类型就定义为Variant*,
将这个参数值赋给你需要的类型的 变量就OK了。
 
将增加一个参数,必须放在最后,设置为[out,retval]型,类型设置为double *,
选不到就输进去好了.
 
我设置了函数的一个输出参数outparam,指定它的类型为double *, 但是在客户端调用该
函数时必须指定outparam为double类型,否则会出错。如果为double类型,程序可以正常
运行。我不知道为什么?
 
客户端调用的时候会用var关键字来声明,相当于double *,如果服务器端同时设置了retval型,那么在客户端就会被封装成一个返回double类型的safecall函数。
 
请看我的问题2,谢谢
 
COM中的返回值不是 接口编辑器中列出的返回值,
返回值是通过 参数修饰符 out 来设定的。
接口编辑器的列的返回值你不要改它。
IStrings 在 COM 中好象不支持吧?
 
第二个问题也很好解决。
还是用variant。
在里面存个sgrings不就行了?
你也可以在variant中写入数组。
variant是马桶。啥都可以放的。
 
to cb422:
COM 接口函数中的输出参数,类型必须是 pointer类型的。
你将参数设置为Istrings ** 就可以了。记得给我噢!
 
多人接受答案了。
 
后退
顶部