用VB实现任务栏右下角的小图标

将VB应用程序缩成系统状态栏图标二法
第一种方法:
VB光盘的tools/unsupport/systray目录下有一个例子,将此目录复制到硬盘,编译生成一个OCX控件,在自己的程序中使用此控件,可以实现将程序图标放于右下角系统图标区,这方法比调用API要简单得多


第二种方法:
梁洁仪
---- 在很多应用程序中,其操作窗口缩小后将变成一图标放置在系统状态栏中。

---- 为什么有的程序可以缩小成图标呢?

---- 对于Windows来说,这些图标并非窗口或程序,它们只是图标,能作出这样的功能,关键在于调用了Windows的API函数Shell_NotifyIcon,在Visual Basic开发环境中,通过其所附带的API浏览器,我们可查找出Shell_NotifyIcon的声明格式如下:

---- 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、NIM_MODIFY及NIM_DELETE,本示例中的常量及Shell_NotifyIcon调用都可以在窗口新建的模块中声明它:

Public Const NIM_ADD = 0 //加入图标到系统状态栏中
Public Const NIM_MODIFY = 1 //修改系统状态栏中的图标
Public Const NIM_DELETE = 2 //删除系统状态栏中的图标

---- 这三个常量的应用将中下文中具体介绍。
---- 参数LpData 用以传入NOTIFYICONDATA数据结构变量,我们也需要在"模块"中定义其结构如下:

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

---- 在本数据结构定义中,各变量都有其实用意义:
cbSize:需填入NOTIFYICONDATA数据结构的长度。
HWnd:设置成窗口的句柄。
Uid:为图标所设置的ID值。
UFlags:用来设置以下三个参数uCallbackMessage、
hIcon、szTip是否有效。
UCallbackMessage:消息编号。
HIcon:显示在状态栏上的图标。
SzTip:提示信息。

---- 其中参数uCallbackMessage、hIcon、szTip也应在模块中声明为以下的常量:
Public Const NIF_MESSAGE = 1
Public Const NIF_ICON = 2
Public Const NIF_TIP = 4

---- 了解了上述各参数所代表的意义,就可以直接编写代码了。应用本函数所建立的窗体示例(略)。
---- 为了进一步让大家了解本函数的使用,下面将将详细介绍上例所需编写的代码。

---- 1、加入图标按钮。代码如下:

Dim nid As NOTIFYICONDATA

nid.cbSize = Len(nid)
//取数据结构的长度设置给cbSize
nid.hWnd = Me.hWnd //设置窗体的句柄
nid.uID = 9999 //图标的ID值,可自定义
nid.uFlags = NIF_ICON //表示设置图标
nid.hIcon = Me.Icon
//把图标设置成当前窗体的图标,也可以指定为某一图标文件

Shell_NotifyIcon NIM_ADD, nid //加入图标

---- 2、删除图标按钮。这里要注意的是,当我们把图标加入到状态栏后,一定要把hWnd及uID的值记下来,不然将无法正确删除此图标,本按钮的Click事件代码如下:

Dim nid As NOTIFYICONDATA
nid.cbSize = Len(nid)
nid.hWnd = Me.hWnd //记下句柄
nid.uID = 9999 //ID值
Shell_NotifyIcon NIM_DELETE, nid
//调用Shell_NotifyIcon函数删除它

---- 3、改变图标按钮。同样的道理,在窗体运行过程中,如果要更新图标,可以用以下的Click事件代码来完成:
Dim nid As NOTIFYICONDATA
nid.cbSize = Len(nid)
nid.hWnd = Me.hWnd
nid.uID = 9999
nid.uFlags = NIF_ICON
nid.hIcon = Image1.Picture
//用窗体中的Image控件中之图片来代替

Shell_NotifyIcon NIM_MODIFY, nid //修改它

---- 4、设置信息提示按钮。提示信息就是当我们将鼠标移到本图标上时,这些图标会显示出来的信息,下面的Click事件代码可以作到:
Dim nid As NOTIFYICONDATA

nid.cbSize = Len(nid)
nid.hWnd = Me.hWnd
nid.uID = 9999
nid.uFlags = NIF_ICON + NIF_TIP
nid.szTip = "这是试验图标" + Chr(0)
Shell_NotifyIcon NIM_MODIFY, nid

---- 当然,在把本窗口缩小成图标的同时,也别忘了将窗口隐藏,代码是:Me.hide。这样窗口就不会在任务栏中出现了。
---- 利用Win 32 API函数,我们可以完成很多VB本身不具备的功能,只要灵活运用,必能为VB应用程序增色不少, 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SysTray控件用法详解 VB SYSTRAY 托盘图标VB6自带的systray.ocx控件实现托盘图标程序 : 补充: 然后在自己的VB程序中添加改控件(工程-部件-浏览)。   最好把这个ocx放到C:\WINDOWS\system32。   改控件的属性InTray属性用来设置是否显示在托盘中,True为显示在托盘,False为不显示。TrayIcon属性是在托盘中显示的图标式样。TrayTip属性是鼠标移到改控件上面显示的提示文字。如果要使程序最小化时显示到托盘,如下:   Private Sub Form_Resize()    If Me.WindowState = vbMinimized Then    cSysTray1.InTray = True    Me.Visible = False End If   End Sub   点击托盘图标后让程序显示出来,如下:   Private Sub cSysTray1_MouseDown(Button As Integer, Id As Long)    Me.WindowState = vbNormal    Me.Visible = True    cSysTray1.InTray = False    Me.SetFocus   End Sub '单击关闭不退出程序 Private Sub Form_Unload(Cancel As Integer) 主程序.Hide Cancel = False End Sub '单击关闭不退出程序 Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Cancel = 1 主程序.Hide End Sub ’tui为窗体菜单-退出选项名称 Private Sub tui_Click()’快捷键设ALT+F1 End End Sub '注:"主程序"代表一个窗体(Form),窗体菜单-退出选项需设置快捷键ALT+F1 '这个控件有一个小小的问题,如果托盘菜单有退出选项,不能直接用"End 语句",否则在编译后运行期间用户选择退出后,操作系统会报错,以上使用发送按键方法避免出错 ,当然还有其他避免出错方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值