用VB5对Windows 95任务栏提示区编程
在Windows 95中任务栏最右边有个提示区,在该区域系统允许用户添加自己的图标以满足不同的需要。在中文Windows
95中缺省有输入法图标和时间提示栏,装有声卡的机器还会增加一个声音控制图标。提示区中的图标方便了程序和用户的交流,以更形象的形式给用户以提示。
有很多资料介绍用VisualC++或Delphi对任务栏提示区进行编程的方法,但是用VB编程的方法却不多见。笔者通过大量查阅资料,获得了用VB进行编程的方法,在此介绍给大家。同时,程序中给出了通过调用API实现在用户应用程序中直接关机及重启机的方法,希望能对大家有所启发。
两个重要函数
1. Shell_NotifyIcon函数
其声明为:
Private Declare Function Shell_NotifyIconLib"shell32"Ali
as"Shell_NotifyI conA"(ByVal dwMessage As Long,pnid
As NOTIF YICONDATA) As Long
该函数给系统发送添加、修改、删除任务栏提示区图标的消息, 系统根据发送的消息进行相应的处理。可以说该函数是任务栏提示区编程的核心,掌握它就可以轻松地编写出符合要求的程序来。该函数中的参数意义如下:
(1) 参数dwMessage(ByVal dwMessage As Long)
该参数通知系统进行何种操作,取值如下:
NIM_ADD
添加图标到任务栏提示区
NIM_DELETE 删除图标
NIM_MODIFY 发送图标特性已改变的消息
(2) 参数pnid(pnid As NOTIFYICONDATA)
存储图标特性数据,NOTIFYICONDATA定义如下:
Private Type
NOTIFYICONDATA
CbSize As Long '该数据结构的大小
hWnd As Long '处理图标通知消息的窗口句柄
uID As Long '应用程序定义的图标号
uFlags As Long '决定图标的运行特性,一般取组合NIF_ICON Or NIF_TIP Or NIF_ MESSAGE,其意义为显示图标及提示,并对消息进行处理
uCallbackMessage As Long '消息处理回调函数
hIcon As Long
'图标句柄
szTip As String*64
'图标提示
End Type
2. 消息处理回调函数
用C或C++编写过程的读者可能都知道,回调函数是Windows程序中由系统直接调用的一种函数,用C或C++很容易实现,而在VB中如何实现很少有资料介绍。作者也曾一筹莫展,后来终于发现可以直接应用VB
的时间函数,但是对其中的参数的应用要进行转换。如最常用到的Mou seMove事件,就需要把它的X参数(Single型)转换为Long型,然后就可以把它作为消息应用了。需要注意的是,进行消息处理窗体的ScaleMo
de属性必须设为模式3(Pi xel)。
具体实现
1. 创建窗体
在VB5中创建一新工程,选择标准EXE,将新窗体的名称属性设为fr mTray,ScaleMode属性设为模式3(Pixel),Visible属性置为False,窗体的Icon属性设为用户喜爱的图标,这个图标将在程序运行后被显示在提示栏中。在窗体中加入四个Image控件序列,编号(Index
)分别为 0、1、2、3,名字为:imgTrayIcon,这四个控件的Picture属性分别设置成想要显示的图标文件(注意:和设置窗体的Icon属性一样,只能设置成扩展名为Icon的图标文件),在它们的Tag属性中分别加入"草花"
、"方块"、"红心"、"黑桃"。窗体外观如图1所示。图1
打开菜单编辑器,设计一个菜单,标题为"提示菜单",名称为mnuTr ay。该菜单将在程序运行过程中用户用右键单击图标时显示,以供用户选择将要进行的操作。菜单项设置如下表所示,菜单外观见图1。表1
2. 编写代码
编者注:源程序发表在本报的WWW站点上,地址是:http://www.com puterworld.com.c n/98/skill/default.htm。欢迎访问!
将代码录入到窗体代码窗口中,单击运行按钮。程序运行后,会看到在提示栏区增加了我们的应用程序使用的图标。程序运行结果见图
2,图3是单击鼠标右键后的结果。
程序在中文Windows 95、VB5.0专业版下通过。
宁夏电力试验研究所 沙卫国([email protected])