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 函数,还需要更详尽的资料和读者更大的努力。