论文部分内容阅读
摘要:该文介绍了利用VB设计简单适用的超文本功能时热链功能的设计与实现方法。
关键词:超文本;Visual Basic;热链
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)36-2655-03
Designing and Achieving Hotlink of hypertext System in VB
FAN Xian-mei
(Technique Center of Modern Education, Anhui University of Architecture, Hefei 230022, China)
Abstract:The article describes a new methods to designed and achieve hotlink in a simple and practicable hypertext system in VB
Key words: Hypertext; Visual Basic; Hotlink
1 引言
使用过WINDOWS的人都会用到Micsorft复杂的帮助系统,该系统可以让用户很快地找到特定的主题,并且通过单击热链在主题与主题之间跳转。WINDOWS帮助系统是典型的超文本应用程序。
超文本是近年来兴起的一种表示和管理多媒体信息的强有力工具。与传统文本相比超文本的最大特点是:它可以把信息根据需要以非线性的方式链接起来。结点(Node)和链(Link)是超文本的两个核心概念。结点是信息的单位,可以包括文本、图像、声音、视频、动画等各种媒体信息。链用来组织信息,表达信息间的关系(包括媒体间的时空关系),实现结点间的连接与转移(单向与双向)。因此,超文本试图通过非线性的手段,将相关信息有机地组织在一起,模拟人脑的自由联想。它不仅注意信息本身,更注意信息之间的联想关系。建立和浏览信息系统时,用户可以任意选择起始点和其后的顺序。
热链是超文本的灵魂,它定义了超文本的结构,其作用主要是用来建立结点之间的基本顺序。
2 热链的基本要素
在显示的超文本中,热链总是突出显示,它是一个活动的区域,当鼠标在热链上移动时,会改变指针的形状,当用户在活动区域内单击鼠标时,会被引导到相关主题。热链可以是文本或图片。热链的内容可以用异种格式(带下划线、粗体/斜体、改变颜色、图标、按钮等)给予标记。
热链的特点包括两个方面:一是鼠标处于其上时具有不同的形状;二是单击鼠标左键的响应。操作过程上可以分为两个事件:鼠标移动和鼠标单击。由鼠标移动的响应函数完成对鼠标是否在热链上的判断,若在热链上则改变鼠标的形状。在单击鼠标事件的响应函数中,根据鼠标的开关来确定应弹出的相应信息。
3 超文本中热链的设计与实现
目前有多种方法开发超文本系统。由于VB不支持超文本,因此,笔者在用VB开发多媒体CAI教学软件时用VB开发了一个小型的超文本系统。本文仅介绍其中热链功能的实现方法。
3.1 鼠标指针图形的设计
在通常情况下我们在屏幕上所看到的鼠标指针形状为双线箭头,当鼠标移动到热链上时,其指针形状将改变以提示用户此处是热区,这里指针形状的改变是由Mous.Move函数来实现。而鼠标的指针形状的设计和选择有两种方法:第一种方法是利用现有资源。这种方法比较简单,在WINDOWS系统和VB软件的Cursors子目录中有许多扩展名为.CUR的图标文件,这些文件提供了各种不同形状的图形,我们在开发软件时可以根据不同的需要适当加以选择后直接应用(只要将所选择的图形文件拷贝到相应的路径及文件夹中即可)。当然还可以利用各种能够找到的扩展名为.ICO的图标文件。第二种方法是自己设计鼠标图形。目前有许多易学实用的图标编辑工具软件,比较常见的有以下几种:Axialis IconWorkshop(全功能图标编辑软件)、YansIconMaker(Ico格式图标及ani格式动态光标制作)、Falco Image Studio (图标制作和编辑工具)、IconCool Studio(ico图标编辑和图标制作工具)、IcoFX(图标编辑工具)、Easy Paint Tool SAI(专业级的图标制作工具)、IconLover(icon图标处理软件)、ArtIcons Pro(创建和编辑以及管理系统环境下图标ico)等。利用这些工具软件可以对已有图标进行修改编辑,也可以自行设计具有独特风格的个性化鼠标图形,图形编辑结束后,将所编辑的图形以合适的文件名存放到适当的目录中,系统将会把该文件以.ICO或.CUR后缀文件格式存放。
根据图形来源不同,在VB应用程序中,编写相应的语句如下:
Cursor1=LoadPicture(“D:\ICONS\MOUSE02.ICO”) \\自定义图形
Cursor2=LoadPicture(“D:\ICONS\MOUSE03.CUR”)\\自定义图形
Cursor3=LoadPicture(“C:\Windows\Couser\Buzy_1.CUR”) \\系统提供的图形
以上的文件路徑应根据文件存放位置自行设置。
3.2 MousePointer和MouseIcon属性的设置
在VB系统中为控件设置了MousePointer属性和MouseIcon属性,MousePointer属性用来设置或返回当鼠标经过对象某一部分时鼠标指针的类型,该属性设有15个值,当其返回值为0—14时,鼠标的图形为系统设置的不同的默认形状;当其值为99时,则显示自定义鼠标图形。因此,在应用程序中若要使用自定义的鼠标图形,必须蒋该属性的值设为99,否则蒋不能显示自定义的鼠标图形。MouseIcon属性提供一个自定义图标,使程序能够很容易地访问自定义光标,它可以是任意大小并具有任何热点的光标,它在MousePionter属性设为99时使用。为窗体上的Picture1控件设置自定义鼠标指针类型的相应语句示例如下:
Frmjtzd.Picture1.MousePionter=99
Frmjtzd.Picture1.MouseIcon= LoadPicture(“D:\ICONS\MOUSE02.ICO”) \\自定义图形
虽然VB不创建或不支持彩色光标(.CUR格式)文件,但可以使用MouseIcon属性来装入光标或者图标文件。这样装入的彩色光标文件(例如Windows附带的)将以黑白形式显示。要显示一个彩色光标,应使用彩色图标文件(.ICO格式)。
目前在高版本的Windows系统中支持32位高色彩的鼠标指针,然而在VB程序中,却不支持这么高位的色彩,也不支持动画图标,因此,若要载入32位色彩或者动画的鼠标指针,可以通过调用Windows的API函数实现这一目的。这里用到两个API函数,LoadCursorFromFile用于装入新光标(xin),需要指明新光标的具体路径及文件名;SetClassLong用于设置使用新光标(NewCur)。这一函数使用时会返回一个代表前一个光标的变量值(OldCur),为我们关闭程序时得以方便的恢复原始光标(OldCur)。函数的VB定义如下:
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA"(ByVal lpFileName As String) As Long
Private Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Dim NewCur As Long
Dim OldCur As Long
為窗体对象设置新光标的语句示例:
Private Sub Form_Load()
NewCur = LoadCursorFromFile("C:\WINDOWS\CURSORS\ handns.ani")
OldCur = SetClassLong(hwnd, -12, NewCur)
End Sub
恢复原始光标的语句示例:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
SetClassLong hwnd, -12, OldCur
End Sub
3.3 建立跟踪热链的数据结构
超文本文档中将会包含许多超级链接,程序只有记录了热链在屏幕中的位置后,我们才能跟踪它们,为此,必须定义一个记录热链位置的数据结构:
Private Type Link_Type
Left X As Integer
Top X As Integer
Right X As Integer
Bottom X As Integer
LinkIndex As Integer
End Type
这个数据主要用于记录热链在屏幕中的位置,这是由程序来实现的,当文字在屏幕上显示的同时,读取文字的子程序会自动的识别其中的热链,并记录其各热链在屏幕上的位置(上、下、左、右)及序号,以备下一步使用。
3.4 建立鼠标移动事件与其响应函数的映射
当经过处理后的超文本文件显示在屏幕上时,其热链部分将以异种格式显示,此时热链在屏幕中的位置已经被相应的子程序记录下来,当光标在其上移动时,光标的形状将改变以提示用户此处是热链,这一功能的实现是由鼠标移动事件及其响应函数来完成的。该项函数主要用来判断鼠标是否在热点上,若在则改变鼠标指针形状。相应的语句如下:
Private Sub Picture1_mouseMove(Button As Integer, Shift As integer, X As single, Y As single )
Dim found As integer
Dim Index As integer
Found=false
For index=1 to CurrentLink
If(X>Links(index).left X) and ((Xlink(indx) .Top Y)
and ((Y Found=ture
End if
Next Index
If Found Then
Frmjtzd .Picture1 .MouseIcon=Couser1 \\用户自定义鼠标指针图形
Frmjtzd .Picture1 .MousePointer=99
Else
Frmjtzd .Picture1 .MousePointer=0
End if
End sub
3.5 建立单击鼠标事件与其响应函数的映射
鼠标移动到热链上后将改变形状,这时单击鼠标则可以弹出相关信息,这一功能的实现主要是由MouseDown函数来完成的。假如Picture1中(100,100,200,200)的矩形区域为热链所在位置,Word的内容为与热链相关的信息内容,则相应的部分函数语句如下:
Private Sub Picture1_mouseDown (Button As Integer, Shift As integer, X As single, Y As single )
Dim found As integer
Dim Index As integer
Found=false
For index=1 to CurrentLink
If(X<200 and X>100 and Y>100 and Y<200) then
Picture2.piont Word
End if
┋
Next Index
End sub
4 结束语
热链是超文本的核心,是实现超文本功能的关键技术,本文介绍的方法已应用于我们开发的多媒体CAI教学软件中,用此方法可以轻松实现多个热链响应,效果很好。
参考文献:
[1] Regelski M.Visual Basic 开发多媒体应用程序[M].谢东译.北京:清华大学出版社,1997.
[2] Petroutsos E.Visual Basic 从入门到精通[M].邱促潘,译.北京:电子工业出版社,1997.
关键词:超文本;Visual Basic;热链
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)36-2655-03
Designing and Achieving Hotlink of hypertext System in VB
FAN Xian-mei
(Technique Center of Modern Education, Anhui University of Architecture, Hefei 230022, China)
Abstract:The article describes a new methods to designed and achieve hotlink in a simple and practicable hypertext system in VB
Key words: Hypertext; Visual Basic; Hotlink
1 引言
使用过WINDOWS的人都会用到Micsorft复杂的帮助系统,该系统可以让用户很快地找到特定的主题,并且通过单击热链在主题与主题之间跳转。WINDOWS帮助系统是典型的超文本应用程序。
超文本是近年来兴起的一种表示和管理多媒体信息的强有力工具。与传统文本相比超文本的最大特点是:它可以把信息根据需要以非线性的方式链接起来。结点(Node)和链(Link)是超文本的两个核心概念。结点是信息的单位,可以包括文本、图像、声音、视频、动画等各种媒体信息。链用来组织信息,表达信息间的关系(包括媒体间的时空关系),实现结点间的连接与转移(单向与双向)。因此,超文本试图通过非线性的手段,将相关信息有机地组织在一起,模拟人脑的自由联想。它不仅注意信息本身,更注意信息之间的联想关系。建立和浏览信息系统时,用户可以任意选择起始点和其后的顺序。
热链是超文本的灵魂,它定义了超文本的结构,其作用主要是用来建立结点之间的基本顺序。
2 热链的基本要素
在显示的超文本中,热链总是突出显示,它是一个活动的区域,当鼠标在热链上移动时,会改变指针的形状,当用户在活动区域内单击鼠标时,会被引导到相关主题。热链可以是文本或图片。热链的内容可以用异种格式(带下划线、粗体/斜体、改变颜色、图标、按钮等)给予标记。
热链的特点包括两个方面:一是鼠标处于其上时具有不同的形状;二是单击鼠标左键的响应。操作过程上可以分为两个事件:鼠标移动和鼠标单击。由鼠标移动的响应函数完成对鼠标是否在热链上的判断,若在热链上则改变鼠标的形状。在单击鼠标事件的响应函数中,根据鼠标的开关来确定应弹出的相应信息。
3 超文本中热链的设计与实现
目前有多种方法开发超文本系统。由于VB不支持超文本,因此,笔者在用VB开发多媒体CAI教学软件时用VB开发了一个小型的超文本系统。本文仅介绍其中热链功能的实现方法。
3.1 鼠标指针图形的设计
在通常情况下我们在屏幕上所看到的鼠标指针形状为双线箭头,当鼠标移动到热链上时,其指针形状将改变以提示用户此处是热区,这里指针形状的改变是由Mous.Move函数来实现。而鼠标的指针形状的设计和选择有两种方法:第一种方法是利用现有资源。这种方法比较简单,在WINDOWS系统和VB软件的Cursors子目录中有许多扩展名为.CUR的图标文件,这些文件提供了各种不同形状的图形,我们在开发软件时可以根据不同的需要适当加以选择后直接应用(只要将所选择的图形文件拷贝到相应的路径及文件夹中即可)。当然还可以利用各种能够找到的扩展名为.ICO的图标文件。第二种方法是自己设计鼠标图形。目前有许多易学实用的图标编辑工具软件,比较常见的有以下几种:Axialis IconWorkshop(全功能图标编辑软件)、YansIconMaker(Ico格式图标及ani格式动态光标制作)、Falco Image Studio (图标制作和编辑工具)、IconCool Studio(ico图标编辑和图标制作工具)、IcoFX(图标编辑工具)、Easy Paint Tool SAI(专业级的图标制作工具)、IconLover(icon图标处理软件)、ArtIcons Pro(创建和编辑以及管理系统环境下图标ico)等。利用这些工具软件可以对已有图标进行修改编辑,也可以自行设计具有独特风格的个性化鼠标图形,图形编辑结束后,将所编辑的图形以合适的文件名存放到适当的目录中,系统将会把该文件以.ICO或.CUR后缀文件格式存放。
根据图形来源不同,在VB应用程序中,编写相应的语句如下:
Cursor1=LoadPicture(“D:\ICONS\MOUSE02.ICO”) \\自定义图形
Cursor2=LoadPicture(“D:\ICONS\MOUSE03.CUR”)\\自定义图形
Cursor3=LoadPicture(“C:\Windows\Couser\Buzy_1.CUR”) \\系统提供的图形
以上的文件路徑应根据文件存放位置自行设置。
3.2 MousePointer和MouseIcon属性的设置
在VB系统中为控件设置了MousePointer属性和MouseIcon属性,MousePointer属性用来设置或返回当鼠标经过对象某一部分时鼠标指针的类型,该属性设有15个值,当其返回值为0—14时,鼠标的图形为系统设置的不同的默认形状;当其值为99时,则显示自定义鼠标图形。因此,在应用程序中若要使用自定义的鼠标图形,必须蒋该属性的值设为99,否则蒋不能显示自定义的鼠标图形。MouseIcon属性提供一个自定义图标,使程序能够很容易地访问自定义光标,它可以是任意大小并具有任何热点的光标,它在MousePionter属性设为99时使用。为窗体上的Picture1控件设置自定义鼠标指针类型的相应语句示例如下:
Frmjtzd.Picture1.MousePionter=99
Frmjtzd.Picture1.MouseIcon= LoadPicture(“D:\ICONS\MOUSE02.ICO”) \\自定义图形
虽然VB不创建或不支持彩色光标(.CUR格式)文件,但可以使用MouseIcon属性来装入光标或者图标文件。这样装入的彩色光标文件(例如Windows附带的)将以黑白形式显示。要显示一个彩色光标,应使用彩色图标文件(.ICO格式)。
目前在高版本的Windows系统中支持32位高色彩的鼠标指针,然而在VB程序中,却不支持这么高位的色彩,也不支持动画图标,因此,若要载入32位色彩或者动画的鼠标指针,可以通过调用Windows的API函数实现这一目的。这里用到两个API函数,LoadCursorFromFile用于装入新光标(xin),需要指明新光标的具体路径及文件名;SetClassLong用于设置使用新光标(NewCur)。这一函数使用时会返回一个代表前一个光标的变量值(OldCur),为我们关闭程序时得以方便的恢复原始光标(OldCur)。函数的VB定义如下:
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA"(ByVal lpFileName As String) As Long
Private Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Dim NewCur As Long
Dim OldCur As Long
為窗体对象设置新光标的语句示例:
Private Sub Form_Load()
NewCur = LoadCursorFromFile("C:\WINDOWS\CURSORS\ handns.ani")
OldCur = SetClassLong(hwnd, -12, NewCur)
End Sub
恢复原始光标的语句示例:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
SetClassLong hwnd, -12, OldCur
End Sub
3.3 建立跟踪热链的数据结构
超文本文档中将会包含许多超级链接,程序只有记录了热链在屏幕中的位置后,我们才能跟踪它们,为此,必须定义一个记录热链位置的数据结构:
Private Type Link_Type
Left X As Integer
Top X As Integer
Right X As Integer
Bottom X As Integer
LinkIndex As Integer
End Type
这个数据主要用于记录热链在屏幕中的位置,这是由程序来实现的,当文字在屏幕上显示的同时,读取文字的子程序会自动的识别其中的热链,并记录其各热链在屏幕上的位置(上、下、左、右)及序号,以备下一步使用。
3.4 建立鼠标移动事件与其响应函数的映射
当经过处理后的超文本文件显示在屏幕上时,其热链部分将以异种格式显示,此时热链在屏幕中的位置已经被相应的子程序记录下来,当光标在其上移动时,光标的形状将改变以提示用户此处是热链,这一功能的实现是由鼠标移动事件及其响应函数来完成的。该项函数主要用来判断鼠标是否在热点上,若在则改变鼠标指针形状。相应的语句如下:
Private Sub Picture1_mouseMove(Button As Integer, Shift As integer, X As single, Y As single )
Dim found As integer
Dim Index As integer
Found=false
For index=1 to CurrentLink
If(X>Links(index).left X) and ((Xlink(indx) .Top Y)
and ((Y Found=ture
End if
Next Index
If Found Then
Frmjtzd .Picture1 .MouseIcon=Couser1 \\用户自定义鼠标指针图形
Frmjtzd .Picture1 .MousePointer=99
Else
Frmjtzd .Picture1 .MousePointer=0
End if
End sub
3.5 建立单击鼠标事件与其响应函数的映射
鼠标移动到热链上后将改变形状,这时单击鼠标则可以弹出相关信息,这一功能的实现主要是由MouseDown函数来完成的。假如Picture1中(100,100,200,200)的矩形区域为热链所在位置,Word的内容为与热链相关的信息内容,则相应的部分函数语句如下:
Private Sub Picture1_mouseDown (Button As Integer, Shift As integer, X As single, Y As single )
Dim found As integer
Dim Index As integer
Found=false
For index=1 to CurrentLink
If(X<200 and X>100 and Y>100 and Y<200) then
Picture2.piont Word
End if
┋
Next Index
End sub
4 结束语
热链是超文本的核心,是实现超文本功能的关键技术,本文介绍的方法已应用于我们开发的多媒体CAI教学软件中,用此方法可以轻松实现多个热链响应,效果很好。
参考文献:
[1] Regelski M.Visual Basic 开发多媒体应用程序[M].谢东译.北京:清华大学出版社,1997.
[2] Petroutsos E.Visual Basic 从入门到精通[M].邱促潘,译.北京:电子工业出版社,1997.