怎么用js调用C风格的ocx控件
怎样用js调用C风格的ocx控件?
最近在做一个B/S架构的项目,用到某硬件厂商的OCX组件,厂家提供的API中有这样一个:
这应该是一个C风格的函数,传入地址指针,通过给指针指向的区域赋值来充当返回值。
可是js里面没有这样的东西啊,如果我传两个变量进去,浏览器会提示“类型不匹配”。
该怎么办?
------解决方案--------------------
在厂家提供的ocx之上在封装一个你自己的ActiveX,就可以随意按你自己的要求来做了
------解决方案--------------------
自己封装成控件,对外提供一个接口函数,在JS中调用即可,在网页中JS向控件传递参数可以使用BSTR类型
------解决方案--------------------
自己再用C++封装一下接口,生成一个ActiveX OCX,接口不用参数,只需返回一个字符串BSTR,如“100,100”
------解决方案--------------------
C风格的ocx控件 没有这样的说法,
只是可以使用C或C++编写OCX,编译后,OCX都要通过接口进行访问
你那个函数不是ocx的接口函数(接口函数一般都使用HRESULT类型作为返回值),因此无法直接用于浏览器
------解决方案--------------------
我想可以是ocx接口函数,但是能不能让其它语言调用是另外一回事了,让多语言调用就得用它们通用的参数类型,但如果是out retval类型的参数的话就行,当然这是返回值使用的,也只有一个
------解决方案--------------------
lz那个函数就是一个普通的函数,没有任何ocx的影子
------解决方案--------------------
ocx并不是专门为web开发使用的,其也有封装,方便用户调用等意义
------解决方案--------------------
<script language="javascript">
function DetectActiveX()
{
try
{
myact= new ActiveXObject("组件.类");
}
catch(e)
{
//alert("请在Internet Explorer 中启用ActiveX");
return false;
}
//alert("创建成功");
dpis =new Array(3);
myact.vGetDPI(dpi[1], dpi[2]);
return true;
}
看看,行不,要不整两个数组,传个名称进去
最近在做一个B/S架构的项目,用到某硬件厂商的OCX组件,厂家提供的API中有这样一个:
/*************************************************************************/
10、 void vGetDPI(long* DPI_X, long* DPI_Y);
/*************************************************************************/*
函数名称: vGetDPI
* 功能描述: 获取 DPI
* 输入参数: 无
* 输出参数: DPI_X 横向 DPI 默认 96
* DPI_Y 纵向 DPI 默认 96
* 返回值: 无
*/
这应该是一个C风格的函数,传入地址指针,通过给指针指向的区域赋值来充当返回值。
可是js里面没有这样的东西啊,如果我传两个变量进去,浏览器会提示“类型不匹配”。
该怎么办?
ocx
B/S
C风格
指针
不兼容
------解决方案--------------------
在厂家提供的ocx之上在封装一个你自己的ActiveX,就可以随意按你自己的要求来做了
------解决方案--------------------
自己封装成控件,对外提供一个接口函数,在JS中调用即可,在网页中JS向控件传递参数可以使用BSTR类型
------解决方案--------------------
自己再用C++封装一下接口,生成一个ActiveX OCX,接口不用参数,只需返回一个字符串BSTR,如“100,100”
------解决方案--------------------
C风格的ocx控件 没有这样的说法,
只是可以使用C或C++编写OCX,编译后,OCX都要通过接口进行访问
你那个函数不是ocx的接口函数(接口函数一般都使用HRESULT类型作为返回值),因此无法直接用于浏览器
------解决方案--------------------
我想可以是ocx接口函数,但是能不能让其它语言调用是另外一回事了,让多语言调用就得用它们通用的参数类型,但如果是out retval类型的参数的话就行,当然这是返回值使用的,也只有一个
------解决方案--------------------
lz那个函数就是一个普通的函数,没有任何ocx的影子
------解决方案--------------------
ocx并不是专门为web开发使用的,其也有封装,方便用户调用等意义
------解决方案--------------------
<script language="javascript">
function DetectActiveX()
{
try
{
myact= new ActiveXObject("组件.类");
}
catch(e)
{
//alert("请在Internet Explorer 中启用ActiveX");
return false;
}
//alert("创建成功");
dpis =new Array(3);
myact.vGetDPI(dpi[1], dpi[2]);
return true;
}
看看,行不,要不整两个数组,传个名称进去