在VB 中怎样编写带有窗体的 DLL组件,请举例。      谢!!!!!

解决方案 »

  1.   

    在工程中添加一个窗体·····
    写一个过程
    Public Sub ShowForm()
        Dim frmT As New Form1
        frmT.Show
    End Sub
      

  2.   

    VB的帮助上有详细的介绍.
    在 ThingDemo 工程中添加窗体
    进程内部件可以用作提供过程和对话框的库,使用进程内部件既能够节省编程时间,又能为应用程序提供一致的外观和风格。注意 创建一个 ActiveX DLL 示例需要分为几步,这个帮助主题只是其中一步。要访问该帮助主题,选择帮助主题“创建 ActiveX DLL”即可。本主题介绍对象如何控制模式的或无模式的对话框。两种情况都采用了同一个窗体,如图 2.3 所示。图 2.3   “dlgDemo”对话框要在 ThingDemo 工程中添加窗体,请按照以下步骤执行: 在“工程资源管理器”窗口中,单击“ThingDemo”使之成为活动的工程。 
    重点   在使用工程组时,在添加新的模块之前,必须确保活动的工程是正确的。在“工程”菜单中,单击“添加窗体”打开“添加窗体”对话框。双击“添加窗体”图标添加一个窗体。 
    设计一个 Visual Basic 窗体,并把它保存为 ThingDemo_dlgDemo.frm。下表列出了窗体中对象的属性设置。对象 属性 设置值 
    Form Name
    BorderStyle
    Caption dlgDemo 
    Fi xed Dialog
    Dialog Box 
    TextBox Name
    Text txtDemo
    (Null) 
    客户应用程序并不直接调用对话框,因为窗体是私有类。客户应用程序不能创建私有类的实例,也不能将私有类的实例传递到客户应用程序。与此有关的详细说明,请参阅“部件设计的一般准则”的“属性和方法中所用的数据类型”。为了显示对话框,客户应用程序需要调用全局的 Dialogs 对象的 ShowDialog 方法,这将创建并显示 dlgDemo 窗体。要在 dlgDemo 窗体中添加代码,请按照以下步骤执行: 双击 dlgDemo,打开它的代码窗口,添加下列代码。 
    '声明一个事件。
    Event NotifyClients(ByVal Data As String)向文本框的 Change 事件添加下列代码。当文本框的内容改变时会产生 NotifyClients 事件,并以新的文本内容作为事件的参数。 
    Private Sub txtDemo_Change()
    RaiseEvent NotifyClients(txtDemo.Text)
    End Sub为了禁止在没有通知 Dialogs 对象的情况下关闭对话框,可以把下列代码放在 QueryUnload 事件过程中。 
    Private Sub Form_QueryUnload(Cancel As Integer, _
    UnloadMode As Integer)
    '如果按了 Close 按钮,则
    '   隐藏对话框,但是不卸载它。
    If UnloadMode = vbFormControlMenu Then
    Cancel = True
    Me.Visible = False
    End If
    End Sub如果 dlgDemo 以模式对话框的形式显示,那么隐藏它而不是卸载它将允许 Dialogs 类的 ShowDialog 方法检索文本框的值。要创建 Dialogs 类,请按照以下步骤执行: 在“工程”菜单中,选择“添加类模块”打开“添加类模块”对话框。双击“类模块”图标向工程中添加类模块。
    在“属性”窗口中,将类的 Name 属性改为 Dialogs。
    在“属性”窗口中,将 Instancing 属性改为 GlobalMultiUse。这样,即使没有显式地创建 Dialogs 对象,也可以调用 ShowDialog 方法。
    在声明部分加入下列代码,它的作用是:创建一个 WithEvents 变量,以便处理 dlgDemo 的 NotifyClients 事件;创建一个事件,使 Dialogs 对象能够为自己的客户应用程序产生这个事件。 
    Private WithEvents mdlg As dlgDemo
    Event NotifyClients(ByVal Data As String)在“对象”框中,选择“mdlg”来显示由 dlgDemo 产生的 NotifyClients 事件的事件过程。添加下列代码: 
    Private Sub mdlg_NotifyClients(ByVal Data As String)
    RaiseEvent NotifyClients(Data)
    End Sub一旦对话框的文本框内容改变,Dialogs 对象就可以从它的 dlgDemo 窗体接收到 NotifyClients 事件。Dialogs 对象立即产生它自己的 NotifyClients 事件,并向它的客户应用程序传递数据。在代码窗口的“对象”框中,选择“类”。在“过程”框中,选择“初始化”。向 Class_Initialize 事件过程中添加下列代码: 
    Private Sub Class_Initialize()
    Debug.Print "Dialogs object created"
    Set mdlg = New dlgDemo
    End Sub在“过程”框中,选择“终止”。向 Class_Terminate 事件过程中添加下列代码: 
    Private Sub Class_Terminate()
    Debug.Print "Dialogs object terminated"
    Unload mdlg
    Set mdlg = Nothing
    End Sub在终止时,控制窗体的对象应该卸载该窗体,并把它对该窗体的引用设为 Nothing,从而避免孤立的窗体占用资源。在“工具”菜单中,单击“添加过程”打开“添加过程”对话框。在“名称”框中输入 ShowDialog。单击“函数”和“公共的”,然后单击“确定”。 
    在代码窗口中,修改新创建的 Function 过程如下所示:Public Function ShowDialog( _
    Optional ByVal Text As String = "", _
    Optional ByVal Modal As Boolean = True) _
    As String
    With mdlg
    .txtDemo.Text = Text
    If Modal Then
    .Caption = "Modal Dialog Box"
    .Show vbModal
    ShowDialog = .txtDemo.Text
    Else
    .Caption = "Modeless Dialog Box"
    .Show vbModeless
    End If
    End With
    End Function可选的 Typed 参数使编译器能够捕捉到类型不匹配错误,这样就可以在运行之前发现错误。关于可选的 Typed 参数,请参阅《Visual Basic 程序员指南》的“编程基础”。把类模块保存为 ThingDemo_Dialogs.cls。 
    显示对话框的 ShowDialog 方法有两个可选的参数: 准备显示的初始文本
    决定对话框是否为模式对话框的布尔参数 
    在显示对话框之前,Text 参数被赋给 dlgDemo 上的文本框。Modal 参数的缺省值是 True,如果忽略它,对话框将是模式的。如果对话框为模式的,那么在用户关闭了对话框之后,ShowDialog 方法返回 txtDemo 文本框的内容。如果对话框为无模式的,则不需要返回任何值。因为只要文本框的内容改变了,客户应用程序立刻就能收到 NotifyClients 事件。详细信息 关于事件,在“部件设计的一般准则”的“给类添加事件”中讨论。循序渐进
    创建 ActiveX DLL 示例需要好几步,该帮助主题只是其中一步。目的 请参阅 
    到下一步 在 TestThing 中使用全局对象 
    从头开始 创建一个 ActiveX DLL 
      

  3.   

    MSDN上的例子位置:Visual Basic 文档
      --使用Visual Basic
        --部分工具指南
          --创建 ActiveX 部件
            --创建 ActiveX DLL
      

  4.   

    麻烦,创建一个activex exe类型的工程,编译成exe