首页 >> 读书频道 >> 电脑 >> VB托盘程序详解上
 
· SENDMESSAGE函
· 计数器和自动编号
· 向控件发送系统热键
· SENDMESSAGE函
· 格式化页面
· 在VB中终止Win9X
· CSS2中有哪些新特点?
· 回调(CallBacks
· 使Shell指令具Wai
· 使Shell指令具Wai
· 从任务列表中隐藏
· 闪烁的标题栏
 
· 电视剧《刁蛮公主》下载和
· 美容养颜手册
· 加油金顺剧情分集介绍完整
· 红楼梦:120回全本[清
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 武林寓言故事
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

VB托盘程序详解上


查看有无更新版本

关键字:VB 2006-9-18

 

很多软件运行时会在系统托盘区(就是桌面右下角显示时间的区域)出现一个小图标,它作为程序运行的一个标志,我们可以通过使用小图标所弹出的菜单来控制应用程序的状态。本例就给出了一个功能比较完整的托盘程序,我们可以看到怎样用API函数Shell_NotifyIcon来添加、删除、更改托盘图标;而且例中还演示了为托盘图标添加右键菜单和浮动提示的方法。 

程序(附后)用到了Shell_NotifyIcon、SendMessage、CallWindowProc、SetWindowLong等API函数,其中Shell_NotifyIcon是主要的函数,它用来添加、删除、更改系统托盘区(taskbar status area)的图标,所以我们先来看看这个函数的声明和参数:

使用API函数之前必须先在程序中声明如下:

Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long 
 
 
其中各参数的意义如下表: 

参数: 意义 
dwMessage 为消息设置值,它可以是以下的几个常数值:0、1、2 
NIM_ADD = 0  加入图标到系统状态栏中 
NIM_MODIFY = 1  修改系统状态栏中的图标 
NIM_DELETE = 2  删除系统状态栏中的图标 

LpData 用以传入NOTIFYICONDATA数据结构变量,其结构如下所示:

Type NOTIFYICONDATA

cbSize As Long  需填入NOTIFYICONDATA数据结构的长度
HWnd As Long 设置成窗口的句柄 
Uid As Long 为图标所设置的ID值
UFlags As Long  设置uCallbackMessage,hIcon,szTip是否有效
UCallbackMessage As Long 消息编号
HIcon As Long   显示在状态栏上的图标
SzTip As String * 64 提示信息
End Type 

返回值 Long,非零表示成功,零表示失败 

在使用这个API函数之前我们应该先定义结构类型NOTIFYICONDATA:

Public Type NOTIFYICONDATA 
 cbSize As Long HWnd As Long 
 Uid As Long UFlags As Long 
 UCallbackMessage As Long 
 HIcon As Long 
 SzTip As String * 64 
 End Type  

然后定义一个NOTIFYICONDATA的变量TheData来记录设置托盘图标的数据

Private TheData As NOTIFYICONDATA 



这时我们就可以使用这个函数来设置系统托盘图标了,具体方法如下:

 1、添加图标

With TheData 
.Uid = 0
.HWnd = frm.HWnd 'frm.HWnd是程序主窗体的句柄
.cbSize = Len(TheData)
.HIcon = frm.Icon.Handle'frm.Icon.Handle指向主窗体的图标
.UFlags = NIF_ICON
.UCallbackMessage = TRAY_CALLBACK 
 '作用是允许返回消息,在下一节中会有详细解释。
.UFlags = .UFlags Or NIF_MESSAGE
.cbSize = Len(TheData)
 End With
 Shell_NotifyIcon NIM_ADD, TheData  
'根据前面定义NIM_ADD,设置为“添加模式”,然后添加 
 

 2、删去图标

With TheData
.UFlags = 0
End With 
Shell_NotifyIcon NIM_DELETE, TheData
'根据前面定义NIM_DELETE,设置为“删除模式” 
  
 3、更改图标

With TheData 
.HIcon = pic.Handle  
'pic是图片狂PictureBox,存放图标文件
.UFlags = NIF_ICON
End With 
Shell_NotifyIcon NIM_MODIFY, TheData 
'根据前面定义NIM_MODIFY,设置为“更改模式” 
  
 4、为图标添加浮动提示信息

With TheData 
.SzTip = tip & vbNullChar 
  'tip是字符串string,存储提示信息
.UFlags = NIF_TIP 
'指明要对浮动提示进行设置 
End With 
Shell_NotifyIcon NIM_MODIFY, TheData 
'根据前面定义NIM_MODIFY,设置为“修改模式”  
 

通过以上几段代码我们就能根据自己需要添加、删除、更改系统托盘图标,并能添加系统图标上的浮动提示信息。但这时的托盘图标是孤立的,我们并不能利用它来控制应用程序的行为,怎么办呢?别急,请往下看……

VB托盘程序详解上

[ 1 ]
VB托盘程序详解上 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑