关于 VB 编写DLL的问题(给50分) 在VB 中怎样编写带有窗体的 DLL组件,请举例。 谢!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在工程中添加一个窗体·····写一个过程Public Sub ShowForm() Dim frmT As New Form1 frmT.ShowEnd Sub VB的帮助上有详细的介绍.在 ThingDemo 工程中添加窗体进程内部件可以用作提供过程和对话框的库,使用进程内部件既能够节省编程时间,又能为应用程序提供一致的外观和风格。注意 创建一个 ActiveX DLL 示例需要分为几步,这个帮助主题只是其中一步。要访问该帮助主题,选择帮助主题“创建 ActiveX DLL”即可。本主题介绍对象如何控制模式的或无模式的对话框。两种情况都采用了同一个窗体,如图 2.3 所示。图 2.3 “dlgDemo”对话框要在 ThingDemo 工程中添加窗体,请按照以下步骤执行: 在“工程资源管理器”窗口中,单击“ThingDemo”使之成为活动的工程。 重点 在使用工程组时,在添加新的模块之前,必须确保活动的工程是正确的。在“工程”菜单中,单击“添加窗体”打开“添加窗体”对话框。双击“添加窗体”图标添加一个窗体。 设计一个 Visual Basic 窗体,并把它保存为 ThingDemo_dlgDemo.frm。下表列出了窗体中对象的属性设置。对象 属性 设置值 Form NameBorderStyleCaption dlgDemo Fi xed DialogDialog Box TextBox NameText 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 ThenCancel = TrueMe.Visible = FalseEnd IfEnd Sub如果 dlgDemo 以模式对话框的形式显示,那么隐藏它而不是卸载它将允许 Dialogs 类的 ShowDialog 方法检索文本框的值。要创建 Dialogs 类,请按照以下步骤执行: 在“工程”菜单中,选择“添加类模块”打开“添加类模块”对话框。双击“类模块”图标向工程中添加类模块。在“属性”窗口中,将类的 Name 属性改为 Dialogs。在“属性”窗口中,将 Instancing 属性改为 GlobalMultiUse。这样,即使没有显式地创建 Dialogs 对象,也可以调用 ShowDialog 方法。在声明部分加入下列代码,它的作用是:创建一个 WithEvents 变量,以便处理 dlgDemo 的 NotifyClients 事件;创建一个事件,使 Dialogs 对象能够为自己的客户应用程序产生这个事件。 Private WithEvents mdlg As dlgDemoEvent 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 dlgDemoEnd Sub在“过程”框中,选择“终止”。向 Class_Terminate 事件过程中添加下列代码: Private Sub Class_Terminate()Debug.Print "Dialogs object terminated"Unload mdlgSet mdlg = NothingEnd Sub在终止时,控制窗体的对象应该卸载该窗体,并把它对该窗体的引用设为 Nothing,从而避免孤立的窗体占用资源。在“工具”菜单中,单击“添加过程”打开“添加过程”对话框。在“名称”框中输入 ShowDialog。单击“函数”和“公共的”,然后单击“确定”。 在代码窗口中,修改新创建的 Function 过程如下所示:Public Function ShowDialog( _Optional ByVal Text As String = "", _Optional ByVal Modal As Boolean = True) _As StringWith mdlg.txtDemo.Text = TextIf Modal Then.Caption = "Modal Dialog Box".Show vbModalShowDialog = .txtDemo.TextElse.Caption = "Modeless Dialog Box".Show vbModelessEnd IfEnd WithEnd Function可选的 Typed 参数使编译器能够捕捉到类型不匹配错误,这样就可以在运行之前发现错误。关于可选的 Typed 参数,请参阅《Visual Basic 程序员指南》的“编程基础”。把类模块保存为 ThingDemo_Dialogs.cls。 显示对话框的 ShowDialog 方法有两个可选的参数: 准备显示的初始文本决定对话框是否为模式对话框的布尔参数 在显示对话框之前,Text 参数被赋给 dlgDemo 上的文本框。Modal 参数的缺省值是 True,如果忽略它,对话框将是模式的。如果对话框为模式的,那么在用户关闭了对话框之后,ShowDialog 方法返回 txtDemo 文本框的内容。如果对话框为无模式的,则不需要返回任何值。因为只要文本框的内容改变了,客户应用程序立刻就能收到 NotifyClients 事件。详细信息 关于事件,在“部件设计的一般准则”的“给类添加事件”中讨论。循序渐进创建 ActiveX DLL 示例需要好几步,该帮助主题只是其中一步。目的 请参阅 到下一步 在 TestThing 中使用全局对象 从头开始 创建一个 ActiveX DLL MSDN上的例子位置:Visual Basic 文档 --使用Visual Basic --部分工具指南 --创建 ActiveX 部件 --创建 ActiveX DLL 麻烦,创建一个activex exe类型的工程,编译成exe 下列為何結束為假呢? 关于 QQ 自动的一些操作 VB COM与ASP结合的问题 请教高手一个msflexgrid控件的简单问题 如何在VB里打开ACCESS数据的表,然后读写给表中的记录(比如用户名字) 各位朋友:想问一下时间如何相加????? 動態增加控制的問題 请推荐几种好的加密算法!(文本内容包括英文,数字,标点,中文等) 100分!!! 怎样控制IE? 求大神帮我看看这段代码哪里错了,报错是类型不匹配 想得到CMD窗口输出的字符,VB可以做到这功能吗? vb怎么向键盘缓冲区输入?
写一个过程
Public Sub ShowForm()
Dim frmT As New Form1
frmT.Show
End Sub
在 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
--使用Visual Basic
--部分工具指南
--创建 ActiveX 部件
--创建 ActiveX DLL