我是个新手,我在试做托盘。代码如下:With TheData
.Uid = 0
.HWnd = MDIForm1.HWnd 'mdiform1.HWnd是程序主窗体的句柄
.cbSize = Len(TheData)
.HIcon = MDIForm1.Icon.Handle 'mdiform1.Icon.Handle指向主窗体
的图标
.UFlags = NIF_ICON
.UCallbackMessage = TRAY_CALLBACK
.UFlags = .UFlags Or NIF_MESSAGE
.cbSize = Len(TheData)
.SzTip = "信息管理系统"
End With
Shell_NotifyIcon NIM_ADD, TheData不知为什么在系统托盘区只产生一个空白位置不见有图标,不知我那里写错了?
mdiform1是有Icon的。
.Uid = 0
.HWnd = MDIForm1.HWnd 'mdiform1.HWnd是程序主窗体的句柄
.cbSize = Len(TheData)
.HIcon = MDIForm1.Icon.Handle 'mdiform1.Icon.Handle指向主窗体
的图标
.UFlags = NIF_ICON
.UCallbackMessage = TRAY_CALLBACK
.UFlags = .UFlags Or NIF_MESSAGE
.cbSize = Len(TheData)
.SzTip = "信息管理系统"
End With
Shell_NotifyIcon NIM_ADD, TheData不知为什么在系统托盘区只产生一个空白位置不见有图标,不知我那里写错了?
mdiform1是有Icon的。
Public Sub AddToTray(frm As Form, mnu As Menu)
'任务条在设计时需设为False,因为运行时是只读的 '使用之后保存窗口和菜单
Set TheForm = frm
Set TheMenu = mnu
'安装新的窗口进程
OldWindowProc = SetWindowLong(frm.hWnd, _
GWL_WNDPROC, AddressOf NewWindowProc)
' 在人物条上显示窗口的默认图标
With TheData
.uID = 0
.hWnd = frm.hWnd
.cbSize = Len(TheData)
.hIcon = frm.Icon.handle
.uFlags = NIF_ICON
.uCallbackMessage = TRAY_CALLBACK
.uFlags = .uFlags Or NIF_MESSAGE
.cbSize = Len(TheData)
End With
Shell_NotifyIcon NIM_ADD, TheData
End Sub' 移除托盘图标
Public Sub RemoveFromTray()
On Error Resume Next
With TheData
.uFlags = 0
End With
Shell_NotifyIcon NIM_DELETE, TheData
' 恢复原始窗口进程
SetWindowLong TheForm.hWnd, GWL_WNDPROC, OldWindowProc
End Sub' 设置图标提示
Public Sub SetTrayTip(tip As String)
With TheData
.szTip = tip & vbNullChar
.uFlags = NIF_TIP
End With
Shell_NotifyIcon NIM_MODIFY, TheData
End Sub' 设置托盘图标
Public Sub SetTrayIcon(pic As Picture)
'系统闲时检测是否为图标
If pic.Type <> vbPicTypeIcon Then Exit Sub ' 更新托盘图标
With TheData
.hIcon = pic.handle
.uFlags = NIF_ICON
End With
Shell_NotifyIcon NIM_MODIFY, TheData
End Sub