控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

教你学编ActiveX控件

作者:未知 出处:不详 2010年02月02日 阅读:

学习VB的人对ActiveX控件一定不会陌生,多数情况下使用VB编程的过程实际上就是利用控件的各种属性、方法响应事件的过程。控件是象微软这样的软件商在发售给用户之前编写的软件组件,利用这些软件商早已编好的功能,实现我们的各种要求。VB本身提供的控件能够帮助我们完成大多数的应用,但有时总有软件商们未想到的需求, ;自己动手,丰衣足食”,此时我们可以利用VB强大的功能编写自己的ActiveX控件。

编写控件该做哪些事情呢?ActiveX控件向使用者提供属性,以供访问设置,影响控件的行为;提供方法以供编程调用;提供事件响应,以供捕捉对控件的事件。我们这里设计一个名为;MoveText”的控件,此控件的主要作用在于将给定的文字匀速移动,这样可以将其放置在网页中,动态显示一些友好信息。当然它也可以被其它支持ActiveX的编程语言所使用。我们的控件应该提供的属性有Text,该属性表示在控件上移动的文字,还准备响应用户的 Click事件。说干就干, Three、Two、One ,Let’s Go!

创建ActiveX控件工程
启动VB5.0。
选File下的New Project,在工程类型列表中选择ActiveX Control确定。
经过上一步后,会有一个没有边框、按钮的;画布”出现,这就是VB为我们提供的编写控件的;雏形”,它的名字是UserControl,很丑,我们修改VB属性窗口中的Name属性,将其改为;MoveText”,这就是我们的控件正式名字。
 

添加属性、唤醒事件
右键点击工程窗口中的MoveText,在弹出的菜单中选择View
Code,进入代码窗口。

在Option Explicit下输入以下代码:Public Text As String。将
MoveText的Text变量声明为公用,实际即将其规定为控件的一

个属性,属性的类型为String。

在Public Text As String 下输入语句:Public Event Click(),接着在代码窗口中输入代码:
Private Sub UserControl_Click()

RaiseEvent Click

End Sub

这样,MoveText可以响应的事件中增加了Click事件。

如果要提供方法,只需简单的编写一个Sub即可。
 

 

详细设计控件的行为
为了产生文字移动的效果,我们可以让文字先用前景色写一遍,隔一段时间后在用背景色在原来的位置上再写一次,这样循环往复产生文字移动的感觉。我们前面提到的控件的;雏形”实际上是一个窗口,为了在此上显示文字,我们可以利用Windows API函数来控制颜色、位置等的精确定位。为了精确定时,我们需要在;画布”上放置一个Timer。具体步骤如下:

启动VB5附带的API Text Viewer,浏览Win32Api.txt,将其中的TextOut、GetTextColor、SetTextColor、GetBkColor等函数的声明拷贝至VB当前工程的代码窗口。
在每一个函数的声明前加上关键字Private,否则后面的编译不能通过。
为了后面的代码使用,在Public Event Click()后定义以下变量:
Dim i As Long '该变量控制文字在控件内坐标(位置)

Dim oldTextColor As Long '保存在用背景色显示文字前的当前文 字前景色

Dim bkColor As Long '保存当前背景色

从控件面板拖出Timer控件至控件上,设置Interval属性值为80。
双击Timer图标,进入代码窗口,在Sub Timer_Timer()中输入:
Private Sub Timer1_Timer()

TextOutOld 0, i, Text

i = i + 1

If i 〉= 30 Then

i = 0

End If

TextOutNew 0, i, Text

End Sub

其中的 TextOutOld 和TextOutNew过程为自定义,分别为用背景色输出文字和用前景色输出文字具体的说明为:

Private Sub TextOutOld(x As Long, y As Long, mText As String)

bkColor = GetBkColor(hdc)

oldTextColor = GetTextColor(hdc)

SetTextColor hdc, bkColor

TextOut hdc, x, y, mText, Len(mText) * 2 '汉字两个字节,故乘2

SetTextColor hdc, oldTextColor

End Sub

Private Sub TextOutNew(x As Long, y As Long, str As String)

TextOut hdc, x, y, str, Len(str) * 2

End Sub

这一组函数中用到的hdc是一个MoveText从;画布”继承的属性,无需声明。利用它,WinAPI才能完成各自的功能。

6.为了给其中用到的变量给出适当的初始值,实现以下代码:

Private Sub UserControl_Initialize()

i = 1

Text = "欢迎"

End Sub


编译控件

选File菜单下的Make Project1.ocx,将弹出一个对话框,用于指定编译后的.ocx文件的名称位置,最好将其置于Windows\system目录下,名称为MoveText.ocx。如果上面的步骤无误,则您会得到一个;地道”的ActiveX控件,并且VB会自动将它注册到您的系统注册表。

测试控件

为了测试刚才编写的控件,我们再新建一个工程,此时的控件面板上还没有刚才编写的控件。我们右击控件面板,选择Components…,在弹出的控件列表中选中刚才建立的MoveText。如果在编译时您未将MoveText控件放置于Windows\system下,则需要点击Brose…按钮,选定刚才编译的控件的文件名。之后,会在控件面板中出现MoveText的图标。选择MoveText,在Form1中插入,此时您将看到Form1中的MoveText1内有;欢迎”在移动,如果此时修改MoveText的Text属性值,譬如为;欢迎您棗电脑爱好者”,您将立即看到这句话在控件上移动。您甚至可以将其嵌入您的网页中棗多么神奇,这是您自己编写的控件!好好欣赏一下吧!
                                                           
                                                            【注:本文由控件中国网转载】

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统