在你的DLL里面建公用类!!!
    

解决方案 »

  1.   

    自下不才,有个问题。
    ActiveX dll 好像是不可能带什么个窗体的。
      

  2.   

    在下不才,有个问题。
    ActiveX dll 好像是不可能带什么个窗体的。
      

  3.   

    ActiveX DLL是不带界面的,而Active EXE和用户控件才带,把问题说清楚一点好吗?
      

  4.   

    ActiveX DLL可以带界面的呀,就是创建类时在里面添加窗体,只不过窗体不属于类罢了
    现在我想的是这样:(举个例子)
      我在类里添加一个窗体做虚拟键盘,这个键盘可以输出英文和中文,中文是在这个键盘创体重生成。字母和汉字动态的传到外面。这个键盘将被多处应用,故将它放在DLL中,现在我想的是:当键盘中的安键被请下时,在调用这个DLL的窗体中怎么及时了解这个事件,并接受信息?
      

  5.   

    用属性或方法传 Form 进 ActiveX Dll
    Code:'ActveX Dll -> 工程1 -> Class1:
    Dim WithEvents FormObj As VB.Form
    Public Sub SetFormMethod(FormX As Object)
    Set FormObj = FormX
    End Sub
    Private Sub FormObj_DblClick()
    MsgBox "I am in ActiveX DLL"
    End Sub
    Public Property Set FormProperty(ByVal vNewValue As Object)
    Set FormObj = vNewValue
    End Property'Stanard Exe -> 工程2 -> Form1:
    Dim x As New 工程2.Class1
    Private Sub Form_Load()
    x.SetFormMethod Me
    Set x.FormProperty = Me
    End Sub
      

  6.   

    这个问题挺麻烦但是能够解决因为VB做了很多封装所以事件的传递你得自己做首先,窗体应当自建一个事件,在DLL里的窗体里面添加代码:Event OnClick()Private Sub Command1_Click()
          RaiseEvent OnClick  '窗体里的事件用于传递给类OnClick  
    End Sub
    这是简单的写法,你可以在事件中传递参数,不多说然后,在DLL的类里面添加如下定义
    Public Event OnClick()   '类里的时间用于传递给DLL的调用者
    Dim WithEvents FF As Form1   '必须定义一个基于Form1窗体类的实例,否则无法传递窗体事件为类的初始化事件添加代码,加载新的窗体,(并不显示)
    Private Sub Class_Initialize()
          Set FF = New Form1
    End Sub
    为窗体的事件编写代码,注意这里是关键
    Private Sub FF_OnClick() '这是FF的事件,也就是DLL知道了窗体上按钮的按下
          RaiseEvent OnClick  '然后DLL通知调用者事件发生
    End Sub总之你必须在窗体和DLL和调用者之间打一个桥
    因为在VB里只有类向外有接口
      

  7.   

    补充一下,你有没有为窗体的显示做一个类的方法?
    例如
    Public Sub ShowKeyBoard()
          FF.Show
    End Sub
      

  8.   

    to Sam_E and playyuer:
    你俩的方法我都来试试,谢谢先!
      

  9.   

    to Sam_E:
    你的方法我实现了,再次感谢你,真是爱你一万年。
    不过你那程序又一个小bug,就是 Set ff = Form1,而不是Set ff =New Form1
    好了,我还要去试试playyuer的方法。
      

  10.   

    to playyuer:
    你的方法我也试过了,但和我想的不一样,你是在DLL内部响应外部窗体的事件,不过这也行了,
    对我也很有启发,谢谢诸位了!!给分了!!