DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 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 29
30 31 1 2 3 4 5

1.      打开VS2008,单击起始页中的“New Project…”,选择“ATL”分类下的“ATL Project”项目,项目名称为“ATLtest”。在随后出现的项目向导中,使用默认配置即可。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


 

 

 

2.      添加控件

在解决方案管理器中的项目上右击,依次选择“Add”、“Class”,在添加类对话框中选择ATL分类下的ATL Control类型。单击“Add”按钮,将会出现添加ATL Control向导。输入控件名称"calc",注意不要和项目名称相同,在弹出窗口optionas中Interface选择为“Dual”,Support选择connection point,如图

 

 

注:若使用VS2010在随后出现选择控件要实现的接口的界面,除VS默认添加的实现外,再添加IObjectSafety接口,实现该接口可以避免控件在IE中使用时IE弹出运行的脚本不安全的提示。(vs2008需要自己添加接口).

3.      为控件添加并实现方法

在Class View窗口中右击Icalc接口,依次选择“Add”、“Add Method…”,此处假定我们实现一个加法运算,将方法命名为“Add”,然后添加参数:

 


需要注意的是对返回值的处理。应将参数类型选定为DOUBLE*,并选中“retval”复选框。

向导结束后,VS自动在calc.cpp中添加了该方法的空实现,略加修改后的方法代码为:

STDMETHODIMP Ccalc::Add(DOUBLE a, DOUBLE b, DOUBLE* result) 

{

*result = a + b;

return S_OK;

}

测试该方法:

对VS自动生成的用于测试的htm略做修改来测试添加的方法。修改后的完整htm代码如下:

<HTML>

<HEAD>

<TITLE>ATL 8.0 test page for object Calc</TITLE>

</HEAD>

<BODY>

<OBJECT ID="Calc" CLASSID="CLSID:EEE5C4D7-B87B-4F0A-86BC-A517A9F94311"></OBJECT>

<input type="button" value="Add" onclick="add();" />

<input type="button" value="callWebJs" onclick="test();" />

<script type="text/javascript">

    function add() {

        var calc = document.getElementById('Calc');

        var result = calc.Add(2, 3);

        alert(result);

    }

    function test() {

         var calc = document.getElementById('Calc');

        var result = calc.CallWebJs(printMsg('You are Welcome!!!'));

    }

    function printMsg(msg) {

        alert(msg);

    }

</script>

</BODY>

</HTML>

点击Add按钮后运行结果如下:

 


至此,我们实现了从Web到ActiveX的单项调用。下篇文章将讲述从ActiveX回调js

 

 

from:http://hi.baidu.com/hwygy_001/item/b73aa4f27fdd6edb6225d23b

posted on   DoubleLi  阅读(2653)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2011-11-02 DHTMLX Tree JSON添加自定义属性方法
2011-11-02 DHTMLX Tree中文开发指导
点击右上角即可分享
微信分享提示