VB6.0中的托盘使用

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  
VB6.0将窗体最小化到系统托盘区 控件法,才是最适合最方便的。使用已被微软封装好的控件:csystray1(名称可自定)。 可直接使用 SysTray.ocx 控件。也可用VB打开工程,做必要的话可作些改进(如更换图标、添加功能等),然后编译成ocx控件,可以随意命名。 注册控件方法: 32位系统的方法, 将ocx文件复制到c:\windows\system32下面, 运行命令regsvr32.exe Systray.ocx win7 64位系统的方法: 将ocx文件复制到c:\windows\syswow64下面, 运行命令c:\windows\syswow64\regsvr32.exe Systray.ocx 即可. vb中添加控件 ---------------------------------------------------------------------------------------------------------- 控件的属性和事件浅析: 该控件的InTray属性是用来设置是否显示托盘中,True为显示托盘,False为不显示; 该控件的TrayIcon属性是在托盘显示的图标式样; 该控件的TrayTip属性是鼠标移动到该控件上面时,显示的提示文字; 该控件的重要事件是几个我们常用的鼠标事件:按下、放开、移动、双击,编程时就是利用这些事件达到在任务栏中控制程序的目的。 ------------------------------------------------------------------------------------------------------- 源代码如下: '使程序最小化时显示到系统托盘 Private Sub Form_Resize() If Me.WindowState = 1 Then '如程序为最小化则—— cSysTray1.InTray = True '隐藏到任务栏 Me.Visible = False '让程序界面不可见 End If End Sub '点击托盘图标后,让程序窗体显示出来 Private Sub CsysTray1_MouseDown(Button As Integer, Id As Long) Me.WindowState = 0 '程序回复到Normal状态 Me.Visible = True '从任务栏中清除图标 cSysTray1.InTray = False '令程序界面可见 Me.setfocus End Sub
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、付费专栏及课程。

余额充值