js向C++传参问题
小弟在此请教一个问题:js如何向C++的ATL工程传递一个数组?ATL工程中的函数如何声明?
这是ATL工程的代码:
STDMETHODIMP CATLTest::GetArray(VARIANT* SrcArray, LONG iLength, LONG iStart, LONG iStop, VARIANT* DestArray)
{
// TODO: 在此添加实现代码
SAFEARRAY FAR* psa;
SAFEARRAYBOUND rgsaBound[1];
if (!SrcArray || iStop > iLength) {
rgsaBound[0].lLbound = 0;
rgsaBound[0].cElements = 0;
psa = SafeArrayCreate(VT_VARIANT, 1, rgsaBound);
}
else {
--iStop, --iStart;
rgsaBound[0].lLbound = 0;
rgsaBound[0].cElements = iStop - iStart;
psa = SafeArrayCreate(VT_VARIANT, 1, rgsaBound);
long iIndex = 0;
VARIANT TempDt;
TempDt.vt = VT_INT;
for (int i = iStart; i < iStop; ++i) {
TempDt.pdispVal = SrcArray[i].pdispVal;
SafeArrayPutElement(psa, &iIndex, &TempDt);
iIndex++;
}
}
//返回一个安全数组
V_VT(DestArray) = VT_ARRAY | VT_VARIANT;
V_ARRAY(DestArray) = psa;
return S_OK;
}
这是javaScript的代码:
function GetArray(){
let para1 = document.getElementById("txtArray").value;
let para2 = document.getElementById("txtStart").value;
let para3 = document.getElementById("txtEnd").value;
let arrString = para1.split(" ");
let arrInt = new Array(5);
for (let index = 0; index < arrString.length; index++) {
arrInt[index] = parseInt(arrString[index]);
}
let iStart = parseInt(para2);
let iEnd = parseInt(para3);
console.log(arrInt);
if(iStart && iEnd){
let result = new VBArray(cpp_object.GetArray(arrInt, arrInt.length, iStart, iEnd)).toArray();
console.log(result);]
}
}
这是ATL工程的代码:
STDMETHODIMP CATLTest::GetArray(VARIANT* SrcArray, LONG iLength, LONG iStart, LONG iStop, VARIANT* DestArray)
{
// TODO: 在此添加实现代码
SAFEARRAY FAR* psa;
SAFEARRAYBOUND rgsaBound[1];
if (!SrcArray || iStop > iLength) {
rgsaBound[0].lLbound = 0;
rgsaBound[0].cElements = 0;
psa = SafeArrayCreate(VT_VARIANT, 1, rgsaBound);
}
else {
--iStop, --iStart;
rgsaBound[0].lLbound = 0;
rgsaBound[0].cElements = iStop - iStart;
psa = SafeArrayCreate(VT_VARIANT, 1, rgsaBound);
long iIndex = 0;
VARIANT TempDt;
TempDt.vt = VT_INT;
for (int i = iStart; i < iStop; ++i) {
TempDt.pdispVal = SrcArray[i].pdispVal;
SafeArrayPutElement(psa, &iIndex, &TempDt);
iIndex++;
}
}
//返回一个安全数组
V_VT(DestArray) = VT_ARRAY | VT_VARIANT;
V_ARRAY(DestArray) = psa;
return S_OK;
}
这是javaScript的代码:
function GetArray(){
let para1 = document.getElementById("txtArray").value;
let para2 = document.getElementById("txtStart").value;
let para3 = document.getElementById("txtEnd").value;
let arrString = para1.split(" ");
let arrInt = new Array(5);
for (let index = 0; index < arrString.length; index++) {
arrInt[index] = parseInt(arrString[index]);
}
let iStart = parseInt(para2);
let iEnd = parseInt(para3);
console.log(arrInt);
if(iStart && iEnd){
let result = new VBArray(cpp_object.GetArray(arrInt, arrInt.length, iStart, iEnd)).toArray();
console.log(result);]
}
}
...全文
相关推荐
基于zxing识别条形码+传参webview入库及结算
webview代码是PHP的,接口已经失效,感兴趣的自己写,目前部署手机后可以识别条形码,并把条形码用吐司的形式展现出来
Qt结合QWebEngineView嵌入百度地图:从环境配置到定位实现全指南
在桌面应用开发中,地图展示与定位功能是设备监控、轨迹回放等场景的常见需求。传统方案往往依赖特定操作系统的原生SDK,而Web地图API凭借跨平台、更新快、生态成熟等优势,逐渐成为技术选型的重要方向。Qt作为跨平台C++框架,其QWebEngine模块基于Chromium内核,能够直接承载Web页面,为集成百度地图等JavaScript地图库提供了可行的技术路径。通过本地HTML加载地图API,再借助runJavaScript或QWebChannel实现C++与JavaScript的双向通信,即可完成经纬度输
C++关于构造函数可向父类或者本类传参的讲解
今天小编就为大家分享一篇关于C++关于构造函数可向父类或者本类传参的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
c++开发activex控件和js传参,js调用ocx控件接口函数的代码(
vs2010开发activex(MFC)控件/ie插件(一),测试ocx控件加载 vs2010开发activex(MFC)控件/ie插件(二),js传参数 vs2010开发activex(MFC)控件/ie插件(三),js调用ocx控件的接口函数
易语言源码易语言与网络数据交互
易语言源码易语言与网络数据交互


