日期:2009-05-20  浏览次数:20908 次

其实用处不算很大,因为这样的OCX要运行的话,必须要有数字签名,还需要别人同意安装,不然就会每次提示你,什么什么不安全之类的话。

在VB里面建立一个ActiveX控件,然后在外接程序菜单里面选ActiveX控件接口向导(如果没有的话,在外接程序管理器里加一个)
在这里面就可以定义想要的Method, Property, Event了,如果要想在Client Script 调用的话,就要在设置映射的那一步,映射到控件的成员上去。
完成后,它会给你加上这样的代码(我加了一个MouseMove事件)
Event MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'MappingInfo=UserControl,UserControl,-1,MouseMove

Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    RaiseEvent MouseMove(Button, Shift, X, Y)
End Sub
这样就可以在客户端脚本响应这个事件了
<SCRIPT LANGUAGE=vbscript>
Sub obj1_MouseMove(Button, Shift, X, Y)
    If Button = 4 Then MsgBox(X & "," & Y)
End Sub
</SCRIPT>
在JavaScript里面我还不知道如何取得Button,Shift, X,Y这些参数,不过ActiveX也只能在IE里面用,所以也无所谓了。
加一个属性的代码就要麻烦多了,幸好不用自己写
'注意!不要删除或修改下列被注释的行!
'MappingInfo=UserControl,UserControl,-1,BackColor
Public Property Get BackColor() As OLE_COLOR
    BackColor = UserControl.BackColor
End Property

Public Property Let BackColor(ByVal New_BackColor As OLE_COLOR)
    UserControl.BackColor() = New_BackColor
    PropertyChanged "BackColor"
End Property

'从存贮器中加载属性值
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

    UserControl.BackColor = PropBag.ReadProperty("BackColor", &H8000000F)
End Sub

'将属性值写到存储器
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

    Call PropBag.WriteProperty("BackColor", UserControl.BackColor, &H8000000F)
End Sub

其它的就和写普通的ActiveX Component一样了。