VB6.0中的托盘使用

来源:互联网 发布:bt在线播放软件 编辑:程序博客网 时间:2024/05/18 18:20
1、API 函数和变量
Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Public Type NOTIFYICONDATA
       cbSize As Long   'NOTIFYICONDATA类型的大小,用 Len(变量名)获得即可
       hwnd As Long     '窗体句柄
       uId As Long      '图标资源的ID,通常使用 vbNull
       uFlags As Long   '使哪些参数有效,它是以下枚举类型中的 NIF_INFO Or NIF_ICON Or NIF_TIP Or NIF_MESSAGE 四个数的组合
       uCallBackMessage As Long   '接受消息的事件
       hIcon As Long   '图标句柄
       szTip As String * 128      '当鼠标停留在托盘上时显示的文本
       dwState As Long            '通常为 0
       dwStateMask As Long        '通常为 0
       szInfo As String * 256     'Tip 文本正文
       uTimeoutOrVersion As Long  'Tip 文本显示时间,由于 VB 没有 Union 类型,只能以 Long 代替
       szInfoTitle As String * 64 'Tip 文本标题
       dwInfoFlags As Long
End Type
Public Const NIF_INFO = &H10
Public sampleTray As NOTIFYICONDATA
Public Const NIIF_INFO = &H1

2、建立托盘
With sampleTray           '* 设置托盘属性
        .cbSize = Len(sampleTray)
           .cbSize = Len(sampleTray) 
           .hwnd = Me.hwnd ''
           .uId = vbNull ''
           .uFlags = NIF_INFO Or NIF_ICON Or NIF_TIP Or NIF_MESSAGE
           .hIcon = imgSystem.Picture
           .szInfoTitle = "托盘标题" & vbNullChar
           .szTip = szTip & vbNullChar
           .szInfo = "托盘文字内容" & vbNullChar
           .dwState = 0
           .dwStateMask = 0
           .uTimeoutOrVersion = 2000
           .dwInfoFlags = NIIF_INFO
           .uCallBackMessage = WM_MOUSEMOVE
End With
Call Shell_NotifyIcon(NIM_ADD, sampleTray)    '* 添加托盘

3、删除托盘图标
Shell_NotifyIcon NIM_DELETE, sampleTray