最近开发了一个ocx,由于受到开发COM组件的影响,返回给外部(如:js)的值,我一般都是通过指针带出,但是在实践中测试发现,在ocx中是不行的,例如:
void CreateCurve(LONG id, VARIANT_BOOL * varRetCode);
上述OCX的接口,被C++的程序调用没有任何问题,因为C++语言支持指针类型,但在js中调用,按照常理,控件
中的指针就是函数的返回值,js只要创建一个变量接收该值就可以了,例如:上述接口,在js应该如下调用:
var ret = obj.CreateCurve(2);
不幸的是,对于ocx的接口中的指针类型参数,js是不识别的。解决的方法是将返回给外部的值作为函数返回值返回而不要放在指针函数中。上面的更改如下:
VARIANT_BOOL CreateCurve(LONG id)
但是对于COM组件的接口,指针是能被js识别的,如下为COM中声明的一个接口:
HRESULT CreateCurve([in] LONG id, [out, retval] VARIANT_BOOL * varRetCode);
js调用如下:
var ret = obj.CreateCurve(2);
运行正确