首页 > Web开发 > 详细

ATL创建的ActiveX实现JS回调

时间:2014-01-14 19:48:08      阅读:564      评论:0      收藏:0      [点我收藏+]

最近公司的产品需要使用ActiveX文件上传。讨论了基本所有的技术,最后还是决定C++搞个ActiveX。。。但上传的回调费了半天劲,才搞定。代码如下

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
STDMETHODIMP CFileSelector::TestJSInvoke(VARIANT scriptCallback)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
 
    CComPtr<IDispatch> spCallback;
 
    if(scriptCallback.vt == VT_DISPATCH)
        spCallback = scriptCallback.pdispVal;
 
    CComVariant avarParams[1];
    CFileDialog dlgFile(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST,L"所有文件(*.*)|*.*||",NULL,NULL,FALSE);
 
    if(dlgFile.DoModal() == IDOK)
    {
        avarParams[0] = dlgFile.GetPathName();
    }
 
    DISPPARAMS params = { avarParams, NULL,1,0 };
 
    if(spCallback)
        spCallback->Invoke(0,
            IID_NULL,
            LOCALE_USER_DEFAULT,
            DISPATCH_METHOD,
            &params,NULL,NULL,NULL);
 
    return S_OK;
}

 JS调用方法:

1
2
3
4
5
6
7
8
9
10
<script type="text/javascript">
        function OnClick() {
            var activeX = document.getElementById("ActiveX");
            activeX.FileExtFilter = "所有文件(*.*)|*.*||";
            activeX.TestJSInvoke(function (e) {
                alert(e);
            });
            return false;
        }
    </script>

ATL创建的ActiveX实现JS回调

原文:http://www.cnblogs.com/briny/p/3512877.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!