在“状态区”中建立图标

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

Win95中如“音量”、“日期”、“屏幕”等可以在Win95的状态栏(Tray)上建立快捷图标。如果鼠

标停留在图标上,会显示出相应的工具提示(ToolTip),当用户在图标上单击(或双击)鼠标左键时,软

件会实现相应的功能,单击右键时会实现其简捷的功能。

Tray也称作SysTray、TrayIcon、NotifyIcon、Status Area等,它是Win95/NT的任务条上一个特殊区

域,许多软件运行时在Tray中加入自己的图标,这个区域的另一个特殊之处在于你可以从资源管理器内

拖文件然后放在这个区域。正是由于这些特性,Tray编程在Win95/NT中有特殊的地位。

Tray编程比较特殊,主要包括三个主要方面:图标、工具提示和消息。它属于Shell编程的一部分,

主要是利用Shell API中的Shell_NotifyIcon函数完成的。Shell_NotifyIcon函数是这样声明的:

Type NOTIFYICONDATA

cbSize As Long 结构所占的字节数

hwnd As Long 接受TRAY托盘图标消息的窗口句柄

uID As Long 由应用程序定义的图标识别符

uFlags As Long 标志

uCallbackMessage As Long 由应用程序定义的消息

hIcon As Long TRAY图标句柄

szTip As String * 64 工具提示字符串

End Type

Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA" (ByVal dwMessage As Long,

lpData As NOTIFYICONDATA) As Long

这个结构中的uFlags很重要,它有三种取值:NIF_ICON、NIF_MESSAGE和NIF_TIP,分别表示

hIcon、uCallbackMessage和szTip参数有效,用来修改图标、消息和工具提示。这三个取值可以同时使

用(三个参数相或),也可以单独使用。为了实现对用户鼠标操作的响应,需要在程序中处理

uCallbackMessage所定义的消息,该消息的长参数lParam包含Win32所定义的鼠标消息,如果有多个图

标,短参数wParam表示图标识别符。

在vb光盘中\TOOLS\UNSUPPRT\SYSTRAY目录下有SYSTRAY的工程,经编译后生成

SYSTRAY.OCX控件。

现在我们应用SYSTRAY.OCX控件进行Tray编程。

首先建立一个“工程”,依次:“工程”——“部件”(或者在“工具箱”上单击鼠标右键选择“部

件”),再复选SYSTEM TRAY CONTROL CSYSTRAY,CSYSTRAY控件即出现在“工具箱”中。

SYSTRAY.OCX控件拥有MouseDblClick、MouseDown、MouseMove、MouseUp四个事件,响应先

后为MouseMove、MouseDown、MouseUp、MouseDblClick。下面编程很清楚地说明他们的响应时间次

序。

Private Sub cSysTray1_MouseDblClick(Button As Integer, Id As Long)

MsgBox "Hei!You have DblClick the mouse!"

End Sub

Private Sub cSysTray1_MouseDown(Button As Integer, Id As Long)

If Button = 2 Then

MsgBox "Hei!You have clicked me in right button!"

End If

End Sub

Private Sub cSysTray1_MouseMove(Id As Long)

MsgBox "Hello!I am here!"

End Sub

Private Sub cSysTray1_MouseUp(Button As Integer, Id As Long)

MsgBox "Hei!You clicked me just now!"

End Sub

Private Sub Form_Load()

cSysTray1.TrayTip = "Hello! I am the King of the world!"

cSysTray1.InTray = True

cSysTray1.TrayIcon = "c:\fittings\FACE.ico"

End Sub

SYSTRAY控件还拥有InTray、Name、TrayIcon、TrayTip、Parent、Index、Object、Tag属性。InTray

设置是否在Win95的状态栏Tray上建立一个快捷图标;Name设置SYSTRAY控件的名称;TrayIcon设

置在Tray上所建立快捷图标的外观;TrayTip设置如果鼠标停留在图标上所显示的工具提示(ToolTip)内

容;Tag储存程序所需要的附加数据。

通过实践发现,在使用VB开发应用程序时,灵活使用API 函数,会更大地发挥VB 的作用,使开

发的软件更专业,功能更强大。本文仅仅是介绍了一下API函数在Win95中的使用方法,以作抛砖引玉

之用。真正的应用API 函数,还需要更详尽的资料和读者更大的努力。

上述程序在中文Windows 98和 VB5.0中文企业版下调试通过。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航