VBScript/JScript和ActiveX的双向交互

一、怎么使用ATL做Activex?

这个问题,我问了很多COM高手,都是笑而不言。最后,我采用了最笨也最实在的做法,找MSDN。我发现,我找到了最好的路径。MSDN(2004)上 VC.NET-->VC++--> 添加功能-->VC库-->ATL-->ATL教程。这个什么都说明了。好好练习。MFC也是这样去熟悉吧。

二、VBScript/JScript和ActiveX交互

通过ATL教材,我们可以得到一个绘制多边形的Activex,这个控件有能让IE得到两个事件ClickIn和ClickOut。

 [
  uuid(F9040106-F2F3-417E-92B0-2D58E4E83C6B),
  helpstring("_IPolyCtrl事件接口")
 ]
 dispinterface _IPolyCtrlEvents
 {
  properties:
  methods:
        [id(1), helpstring("方法ClickIn")] void ClickIn([in] LONG x, [in] LONG y);
        [id(2), helpstring("方法ClickOut")] void ClickOut([in] LONG x, [in] LONG y);
    };

例子并提供了和VBScript的交互代码,如下:

<SCRIPT LANGUAGE="VBScript">
<!--
Sub PolyCtl_ClickIn(x, y)  --》得到activex的参数,由ActiveX来触发
   PolyCtl.Sides = PolyCtl.Sides + 1--》调用ActiveX的属性,由Script触发
End Sub
Sub PolyCtl_ClickOut(x, y)
   PolyCtl.Sides = PolyCtl.Sides - 1
End Sub
-->
<HTML>
<HEAD>
<TITLE>ATL 3.0 test page for object PolyCtl</TITLE>
</HEAD>
<BODY>
<OBJECT ID="PolyCtl" <
 CLASSID="CLSID:4CBBC676-507F-11D0-B98B-000000000000">
>
</OBJECT>
</SCRIPT>
</BODY>
</HTML>

俺对VBScrpit的古怪语法不爽,如:控件名字_事件名字(参数1,参数2...)并语句后面没有“;”,所以,改为JScript,如下:

<script language=javascript for=PolyCtrl event=ClickIn(x,y)>--》得到activex的参数,由ActiveX来触发
<!--
window.alert("ClickIn"+" x="+x+" y="+y);
PolyCtrl.Sides=PolyCtrl.Sides+1;--》调用ActiveX的属性,由Script触发
//-->
</script>

<script language=javascript for=PolyCtrl event=ClickOut(x,y)>
<!--
window.alert("ClickOut"+" x="+x+" y="+y);
PolyCtrl.Sides=PolyCtrl.Sides-1;
//-->
</script>

<HTML>
<HEAD>
<TITLE>ATL 3.0 test page for object PolyCtl</TITLE>
</HEAD>
<BODY>
<OBJECT ID="PolyCtl" <
 CLASSID="CLSID:4CBBC676-507F-11D0-B98B-000000000000">
>
</OBJECT>
</SCRIPT>
</BODY>
</HTML>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值