用VB写OCX控件

用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 VBMultimedia 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 事

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:黑客帝国 设计师:我叫白小胖 返回首页

打赏作者

SQ刘

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值