你开始时是用 ActiveX DLL 来创建工程的吗?否则就麻烦了……

解决方案 »

  1.   

    开始不是,后来各个程序联试时考虑用dll交联所以需要改动。我试着先用active dll做个例子(带form),用另一个程序调用,但对active dll创建不熟悉不知怎么下手。
      

  2.   

    “工程”菜单里选属性(最后一项),把“工程类型”改为activex dll就可以了
      

  3.   

    谢谢,我是这样试的:用向导做一个active dll,在里面放入一个form然后编译成dll(假定是mytest.dll),再创建一个可执行工程并引用创建好的mytest.dll,但不知道怎样在这个工程中调用(例好执行dll的内容).  再次感谢!
      

  4.   

    用activex dll,你要用对象编程。就是说,你能使用dll中对象的属性、方法和事件。
    你这样生成的.dll,只有一个对象,就是那个form。假如你的form名字是form1,你可以这样试试看:
    dim fm as object
    set fm = CreateObject("mytest.form1")  或者 set fm = new mytest.form1
    fm.show看看如何
      

  5.   

    你把你的那个mytest.dll的源代码贴出来看看。等一下我给你的例程
      

  6.   

    你新建一个activex dll工程,工程名字:mytest,
    添加一个class,名字叫做msg
    在这个class module中添加一下代码:Option ExplicitPrivate mvarMessageText As String Public Sub DisplayMessage(Optional ByVal ParMSG As String)
        If ParMSG <> "" Or mvarMessageText <> "" Then
            MsgBox ParMSG
        Else
            MsgBox "你没有给参数或属性赋值"
        End If
    End SubPublic Property Let MessageText(ByVal vData As String)
       mvarMessageText = vData
    End Property
    Public Property Get MessageText() As String
        MessageText = mvarMessageText
    End Property然后编译这个dll新建一个标准.exe工程,(要引用这个dll)添加一个文本框和按钮
    在按钮的click事件中写:dim obj as new mytest.msg
    obj.DisplayMessage
    obj.MessageText=Text1.Text
    obj.DisplayMessage
    obj.DisplayMessage "看看是什么"
      

  7.   

    great! thanks. 我想在mytest.dll中放置窗体及其它控件,应该怎么做并且外部调用时直接启动
    窗体。
      

  8.   

    因为窗体是工程的私有对象,如果要暴露给客户端程序使用,还需要做一些工作。
    给你一种方法:
    1,在你的mytest工程中添加一个窗体Form1
    2,在你的mytest工程中添加一个类模块Form01
    3,添加一下代码:
    Option ExplicitPrivate mForm As Form1Public Sub Show()
        mForm.Caption = "test"
        mForm.Show
    End SubPrivate Sub Class_Initialize()
    Set mForm = New Form1
    End SubPrivate Sub Class_Terminate()
    Set mForm = Nothing
    End Sub在你的测试工程的form中,添加一个按钮,在按钮的click事件中:
    dim obj as new mytest.form01
    form01.show这只是一个简单示例,没有什么功能,只是告诉你如何做当然还有很多方法。供你参考