用VB写OCX控件

本文详细介绍了如何使用VB6.0创建一个OCX控件,包括新建工程、设置控件属性、编写代码、运行测试及在VB和VC环境中进行测试。通过实例展示了OCX控件的可重复利用性和跨语言使用的特性,同时解决可能出现的注册问题。
摘要由CSDN通过智能技术生成

用VB写OCX控件

一、 OCX简介

    OCX,即对象类别扩充组件。控件的最大好处是可重复利用,甚至可以在不同的编程语言之间使用,例如可以在VB中嵌入使用VC开发的控件。

二、用VB做一个OCX控件

1、打开VB6.0,鼠标点击左上角“文件(F)”,选择“新建工程(N)”。在弹出的对话框中选择“ActiveX控件”选项,点击“确定”按钮,如下图所示。
在这里插入图片描述
2、进入主界面,将工程名从默认的“工程1”改为“timectrl”,如下图所示。
在这里插入图片描述
3、在控件的界面里拖放一个“Label”控件和一个“Timer”控件,如下图所示。
在这里插入图片描述
4、将“Label”控件名称改为TimeShow,caption属性设为空。然后将“Timer”控件的Interval属性改为1000,表示“Timer”控件的Timer事件每1000ms(1s)发生一次,如下图所示。
在这里插入图片描述
5、双击“Timer”控件,在新出现的函数里添加Timer事件的处理代码。
(1)获取系统时间,需要用到GetLocalTime函数,其输入参数是一个SYSTEMTIME类型的结构体,GetLocalTime是kernel32.dll这个动态链接库中的导出函数。使用GetLocalTime的方法是先在VB文件的头部声明一下这个函数,然后再定义一个SYSTEMTIME类型的结构体,其代码如下:

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

(2)在“Timer”控件的事件处理函数中,将获取到的系统时间显示在“Label”控件中,其代码如下:

Private Sub Timer1_Timer()
Dim sysTime As SYSTEMTIME
Dim strTime As String
GetLocalTime sysTime
strTime = sysTime.wYear & "-" & _
        sysTime.wMonth & "-" & _
        sysTime.wDay & " " & _
        sysTime.wHour & ":" & _
        sysTime.wMinute & ":" & _
        sysTime.wSecond
TimeShow.Caption = strTime
End Sub

在这里插入图片描述
6、(1)点击“运行(R)”会出现如下所示界面。
在这里插入图片描述

(2)点击“允许阻止的内容(A)”,在弹出的对话框中选择“否”,如下图所示。
在这里插入图片描述
(3)点击“否”之后,将会出现如下界面。显示的内容为“2020-10-4 13:45:28”,也就是此时的系统时间,并且时间是一秒一秒地增加的。
在这里插入图片描述
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控件就完成了。

01 , 01.txt 《 VB6.0中通过MSChart控件调用数据库 》 02 , 02.txt 《 用VB6实现动态增减控件 》 03 , 03.txt ActiveX控件的创建 04 , 04.txt ADO控件和DATA控件的冲突(不能共存)的解决方法 05 , 05.txt Combo的自动查询技术 06 , 06.txt DirectX7.0使用心得(1) 07 , 07.txt DirectX7.0使用心得(2) 08 , 08.txt DirectX7.0使用心得(3) 09 , 09.txt FSO对象模型在VB中的应用 10 , 10.txt MsComm 控件的文字传输范例 11 , 11.txt Office或IE4风格的ToolBar 12 , 12.txt Regsvr32.exe注册控件的具体用法 13 , 13.txt TextBox的自动调节 14 , 14.txt TextBox实现打印机效果 15 , 15.txt TreeView的基本操作 16 , 16.txt VB5中DBGRID控件VB6中使用 17 , 17.txt VB6.0动态加载ActiveX控件漫谈 18 , 18.txt VB与MS-Draw开发通用作图软件 19 , 19.txt VB中APP对象及其应用 20 , 20.txt VB中list控件的功能扩充 21 , 21.txt VB中防止将重复项目添加到列表框控件中 22 , 22.txt VB中用Multimedia MCI控件开发多媒体应用 23 , 23.txt Win Api在VB中的妙用 24 , 24.txt WINDOWS SCRIPT HOST对象在VB中的使用 25 , 25.txt 安装向导生成程序组并建立多个程序项 26 , 26.txt 保存复选框选项 27 , 27.txt 不用OCX来创建自己的控件(一) 28 , 28.txt 成组更新控件属性 29 , 29.txt 创建数据驱动窗体 30 , 30.txt 得到鼠标位置 31 , 31.txt 调整 Combo 下拉部分的宽度 32 , 32.txt 动态加入控件VB控件数组中 33 , 33.txt 对ListView中的列排序 34 , 34.txt 放一个Combo到Toolbar中 35 , 35.txt 改变 ListIndex而不发生 Click 事
1.动画及多媒体播放类 anigif6.ocx 动画播放gif文件控件 gif89.dll 又一个播放gif文件的动态链接库 gifPlayer.ocx 又一个播放gif文件控件 flash.ocx 能播放flash动画文件 Digital.ocx 数码显示数字、时间,挺漂亮 MovingChar.ocx 循环移动的字幕 wmp.ocx 提供的ActiveX控件制作媒体播放器 2.界面元素类 2.1.窗口类 asBubbleForm.ocx 显示图片信息提示的窗体控件,外形似帮助提示,弹出气泡式对话框 2.2.分隔条类 splitbar.ocx 窗口分割控件 2.3.工具条类 vbalExpBar6.ocx 不明,没用过 2.4.按钮类 CurtButton.ocx CurtButton 多风格按钮控件 JwldButn2b.ocx 漂亮的VB按钮,可以随意改变按钮表面和按下去时的边框颜色 SmartXpButton.ocx 一个VC开发的美观的XP按钮播放activeX控件 2.5.选项卡类 tabctl32.ocx 圆角选项卡控件 prjXTab.ocx 又是一款圆角选项卡控件,类似tabctl32.ocx 2.6.列表框类 SBLIST.OCX 界面很酷的列表框控件 vbalIml6.ocx 类似ImageList的图象控件 2.7.菜单类 asAssistantPopup.ocx 弹出管理菜单 2.8.皮肤类 YFSkins.ocx 非常美观的皮肤控件 VBOCX.OCX 允许你的应用程序的标题栏颜色为任意渐变色 3.系统类 asctrls.ocx 系统控件,用来安装active控件的,一般用不着 dmview.ocx 磁盘管理控件 fldrvw71.ocx 目录查看、选择、也可以显示文件,功能很强,但可能需要注册 proctexe.ocx Intel 程序纹理,进程信息查询 shlobj71.ocx 以系统默认的正常形式打开程序 sysmon.ocx 系统性能监视的ActiveX控件 Wxini.ocx 好象是读取ini文件的,没用过 4.内置类(VB或Windows系统自带的) combobox.ocx 下拉选择控件 comct232.ocx Animation1动画和UpDown comctl32.ocx 包含toolbar、treeview、listview、imagelist等(5.0) comdlg32.ocx 对话框 dbgrid32.ocx vb5的数据网格控件 dblist32.ocx vb5的数据列表控件 hhctrl.ocx Microsoft帮助文档界面相关文件 msdxm.ocx 媒体播放 msflxgrd.ocx 数据网格控件 mshflxgd.ocx 数据网格控件,是对msflxgrd.ocx的升级 msscript.ocx ScriptControl控件 mswinsck.ocx 网络通讯控件 richtx32.ocx 富文本框控件,增强文本数据显示 wshom.ocx 是Windows本地脚本对象运行时相关文件 5.未归类 MoveLabel.ocx 不明,没用过 LeftMenu.ocx 不明,没用过 daxctle.ocx 不明,没用过 chklsb26.ocx 好象超级兔子软件用到 ?gktube.ocx 孤独剑漏掉了 ?NewCombo.ocx 孤独剑漏掉了 tdc.ocx 相关表列数据ActiveX控件,没用过
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值