VB6 写.OCX控件用VB写OCX控件
一、 OCX简介OCX,即对象类别扩充组件。控件的最大好处是可重复利用,甚至可以在不同的编程语言之间使用,例如可以在VB中嵌入使用VC开发的控件。
二、用VB做一个OCX控件
1、打开VB6.0,鼠标点击左上角“文件(F)”,选择“新建工程(N)”。在弹出的对话框中选择“ActiveX控件”选项,点击“确定”按钮。
2、进入主界面,将工程名从默认的“工程1”改为“timectrl”,包括属性中的“工程1”。
3、用记事本打开 UserControl1.ctl ,我已经帮你写好了“Label”控件和一个“Timer”控件。UserControl1.ctl 的代码是:
VERSION 5.00
Begin VB.UserControl UserControl1
ClientHeight = 2250
ClientLeft = 0
ClientTop = 0
ClientWidth = 3105
BeginProperty Font
Name = "Tahoma"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ScaleHeight = 2250
ScaleWidth = 3105
Begin VB.Timer Timer1
Interval = 1000
Left = 1080
Top = 1440
End
Begin VB.Label TimeShow
AutoSize = -1 'True
BackStyle = 0 'Transparent
Caption = "Label1"
Height = 195
Left = 480
TabIndex = 0
Top = 600
Width = 3585
End
End
Attribute VB_Name = "UserControl1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Option Explicit
Private Declare Sub GetLocalTime Lib "kernel32" (lpsystemtime As SYSTEMTIME)
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Sub Timer1_Timer()
Dim sysTime As SYSTEMTIME
Dim strTime$
GetLocalTime sysTime
With sysTime
strTime = .wYear & "-" & _
.wMonth & "-" & _
.wDay & " " & _
.wHour & ":" & _
.wMinute & ":" & _
.wSecond
End With
TimeShow.Caption = strTime
End Sub6、运行代码。
(1)点击“运行(R)”。
(2)点击“允许阻止的内容(A)”,在弹出的对话框中选择“否”,而不是“是”。
(3)点击“否”之后,将会出现如下界面。显示的内容为“2026-4-4 15:44:37”,也就是此时的系统时间,并且时间是一秒一秒地增加的。
我们可以打开看下 C:\Program Files (x86)\Microsoft Visual Studio\VB98\UserControl1.html 的代码是:
<HTML><BODY><OBJECT classid="clsid:6243895F-95D3-4AB9-A1B2-600197864BBE">
</OBJECT></BODY></HTML>7、在“文件”菜单里选择“生成timectrl.ocx”命令将这个OCX控件文件保存下来,这样一个OCX控件的制作就完成了。
注意:如果点击“确定”按钮后,会弹出“访问系统注册表错误”提示对话框。采取的解决方案是:右击VB图标,打开属性,点击兼容性,设置为以管理员身份运行此程序,再打开就不会提示出错了。
三、 对OCX控件的测试
(一)在VB上的测试
1、打开VB6.0,选择“标准EXE”程序,然后在“工程”菜单里选择“部件”命令,这时会弹出如下图所示的“部件”对话框,点击“浏览”按钮,找到刚才生成的那个timectrl.ocx,然后点击“确定”按钮,完成部件的添加操作。
2、在控件工具条中会看到多一个控件(下图中的最后一个控件),这个多出来的控件就是刚才做的OCX控件。
3、将这个控件拖放到主界面上,然后执行程序,会看到类似于下图所示的结果,并且时间是一秒一秒地增加的。
(二)在VC上的测试
1、为了确保timectrl.ocx是已注册的控件,运行:regsvr32对这个OCX控件进行注册,即使注册过了,再注册也没什么负面影响。
详细步骤:以管理员身份运行命令提示符,访问timectrl.ocx所在位置,成功注册。
2、打开VC6.0,建立一个MFC对话框工程。
3、在对话框任一空白处鼠标右击,选择“插入ActiveX控件 …”。
4、在“插入ActiveX控件”下拉框里找到timectrl.UserControl1,它所对应的路径是刚刚注册的路径,点击“确定”按钮,如下图所示。
5、结果如下图所示,并且上面的时间和VB测试程序上都是逐秒改变的。
至此,用VB写OCX控件就完成了。