从ATL中返回字符串数组到JavaScript的示例
2012-05-11 14:43
232 查看
测试环境:VS2008 SP1 + WinXP SP3
测试时间:2012-5-11
ATL中的代码
VB中的测试代码
JavaScript中的测试代码
.....这里省略若干行代码...
注意:[Class View]窗口中,右键单击接口名称可以为这个接口添加方法和属性。
参考资料:
[1]《JavaScript与ActiveX之间传递数据 - 连载二》
http://leon-s-kennedy.iteye.com/blog/1545891
[2]《ATL控件如何获取网页中的参数》
http://blog.csdn.net/sunlab10987/article/details/3894187
[3]《ActiveX异步回调JavaScript》
http://blog.csdn.net/tingsking18/article/details/4278619
[4]《atl 标准控件在用多线程发消息时VC可以接收但网页无法接收的问题》
http://blog.csdn.net/zyc_sinacom/article/details/7427759
[5]javascript获取COM或ATL返回的数组(整型或字符串数组)VBArray相关
http://blog.sina.com.cn/s/blog_94e13967010129g4.html
测试时间:2012-5-11
ATL中的代码
STDMETHODIMP CSnapshot::GetFilesFromClipboard(VARIANT* retVal) { std::list<std::wstring> listFiles = getFilesFromClipboard(NULL); std::list<std::wstring>::iterator iter = listFiles.begin(); //初始化,待返回数组 SAFEARRAYBOUND pSab[1];//一维数组 pSab[0].lLbound = 0; pSab[0].cElements = listFiles.size(); //数组中元素的数量 SAFEARRAY *pSa; pSa=SafeArrayCreate(VT_VARIANT,1,pSab);//创建一维数组 //填数组 LONG i = 0; while(iter!=listFiles.end()) { VARIANT v; v.vt = VT_BSTR; v.bstrVal = ::SysAllocString( iter->c_str() ) ; SafeArrayPutElement(pSa,&i,&v); ::SysFreeString(v.bstrVal); iter++,i++; } //返回数组 retVal-> vt = VT_VARIANT|VT_ARRAY; retVal->parray = pSa; //pSa是生成的一个安全数组 return S_OK; }
VB中的测试代码
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim objTestATL As CWebsSnapshotLib.Snapshot Dim i As Integer Dim t As Array objTestATL = New CWebsSnapshotLib.Snapshot t = objTestATL.GetFilesFromClipboard() For i = 0 To t.Length - 1 Debug.Print(i & ">>" & t(i)) Next End Sub
JavaScript中的测试代码
<div id="txt">状态未定义</div>
.....这里省略若干行代码...
function goFilesFromClipboard() { document.getElementById("txt").innerHTML = "返回数组:<br/>" var vba = CSnapshot.GetFilesFromClipboard(); var jsa = vba.toArray(); //new VBArray(vba).toArray(); for(i=0;i<jsa.length;i++){ document.getElementById("txt").innerHTML = document.getElementById("txt").innerHTML + "<br/>" +jsa[i]; } }
注意:[Class View]窗口中,右键单击接口名称可以为这个接口添加方法和属性。
参考资料:
[1]《JavaScript与ActiveX之间传递数据 - 连载二》
http://leon-s-kennedy.iteye.com/blog/1545891
[2]《ATL控件如何获取网页中的参数》
http://blog.csdn.net/sunlab10987/article/details/3894187
[3]《ActiveX异步回调JavaScript》
http://blog.csdn.net/tingsking18/article/details/4278619
[4]《atl 标准控件在用多线程发消息时VC可以接收但网页无法接收的问题》
http://blog.csdn.net/zyc_sinacom/article/details/7427759
[5]javascript获取COM或ATL返回的数组(整型或字符串数组)VBArray相关
http://blog.sina.com.cn/s/blog_94e13967010129g4.html
相关文章推荐
- javascript获取COM或ATL返回的数组(整型或字符串数组)VBArray相关
- 关于返回字符串数组的示例
- JavaScript基础 split() 化整为零 将一个字符串切割成若干段(不限制段的数量) 返回一个数组
- JavaScript基础 split() 化整为零 将一个字符串切割成若干段(不限制段的数量) 返回一个数组
- javascript字符串分割为数组
- JavaScript实现存储HTML字符串示例
- javascript中数组的冒泡排序使用示例
- 从零开始学_JavaScript_系列(15)——js系列<4>(数值、字符串、对象、数组、函数、日期的基本方法)
- JavaScript拆分字符串并将分割的数据放到数组中
- javascript中字符串的定义示例代码
- java实现字符串转String数组的方法示例
- Javascript数组常用方法[包含MS AJAX.NET的prototype扩展方法]示例
- JavaScript--常用的---对象-数组-字符串之间的相互转化
- Javascript循环删除数组中元素的几种方法示例
- [Java][JavaScript]字符串数组与字符串之间的互转(join/split)
- JavaScript数组对象实现增加一个返回随机元素的方法
- JavaScript 数组方法处理字符串 prototype
- javascript实现存储hmtl字符串示例
- javascript数组和字符串的常见用法
- JavaScript中的数组、字符串和数学函数