小弟想做个个ActiveX控件,想实现以下功能
返回一个结果具体如下(大概意思,程序有问题):
Public Sub sum(a As Integer, b As Integer)
    Dim c As Integer
    c = a + b
    MsgBox (c)
End Sub现在封装为MyOcx.OCX,在程序中调用MyOcx.sum(10,10)时,可以msg出来,但我如何把这个返回值赋值给个一变量?或可以用其他方式实现(要可以由其他语言调用此控件)?高手指点!!

解决方案 »

  1.   

    改成函数就可以了Public Function sum(a As Integer, b As Integer) As Long
        sum = a + b
    End Function
      

  2.   

    或者改为属性:Public Property Get sum(a As Integer, b As Integer) As Long
        sum = a + b
    End Property
      

  3.   

    TO:lyserver 
    我用的VFP5
    以上两个方法我都试过,在VFP中引用控件时会出错而无法使用这样的方式
    用这种方式不会出错
    Public Sub sum(a As Integer, b As Integer) 
        Dim c As Integer 
        c = a + b 
        MsgBox (c) 
    End Sub 
    但得到返回结果就不知道如何处理了
    先谢谢你的帮助
      

  4.   

    加上ByVal。Public Function sum(ByVal a As Integer, ByVal b As Integer) As Long
        sum = a + b
    End Function
      

  5.   

    '窗体代码
    Private Sub Command1_Click()
    UserControl11.sum 3, 4 'UserControl11是控件名
    End Sub'控件代码
    Public Function sum(a As Integer, b As Integer) As Long
        sum = a + b
        MsgBox sum
    End Function
      

  6.   

    我编译成DLL试过了,可以。
    set talk off
    x=CreateObject("templib.temp")
    y=x.sum(10,20)
    messagebox(str(y))
      

  7.   

    lyserver的就可以了
    如果要用sub,再多一个参数:Public Sub sum(byval a As Integer, byval b As Integer,byref c as integer) 
        Dim c As Integer 
        c = a + b 
    End Sub 调用时:
    dim cc as integer
    MyOcx.sum(10,10,cc)
    msgbox cc
      

  8.   

    改下上面的:
    'lyserver的就可以了 
    '如果要用sub,再多一个参数: Public Sub sum(byval a As Integer, byval b As Integer,byref c as integer)  
        c = a + b 
    End Sub '调用时: 
    dim cc as integer 
    MyOcx.sum 10,10,cc 
    msgbox cc