使用最小化后图标出现在系统的托盘区,并不等于应用程序的窗体缩到托盘区,
托盘区的图表不是窗体或程序,在WINDOWS来说它只是一个图标。编写托盘程序先要解决两个问题:1:窗体加载时创建托盘图标,在程序退出后删除托盘图标。
2:接受托盘图标的消息并处理。
第一个问题需调用API函数shell_notifyicon.
第二个问题用setwindowlong和callwindowproc两个API函数。
“仅供参考”
托盘区的图表不是窗体或程序,在WINDOWS来说它只是一个图标。编写托盘程序先要解决两个问题:1:窗体加载时创建托盘图标,在程序退出后删除托盘图标。
2:接受托盘图标的消息并处理。
第一个问题需调用API函数shell_notifyicon.
第二个问题用setwindowlong和callwindowproc两个API函数。
“仅供参考”
解决方案 »
- 强烈要求封杀jiayouhaonaner, 此人太无耻了,几乎在每个提问后面都贴广告
- 请教关于窗体滚动条的问题!
- 如何在Win2k下操作有权限限制的注册表键,如HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run?
- vb执行查询时,cpu会100%,如何把cpu降下来?我用了doevents还是不行
- hshgxm(呵本)进来领分
- 谁懂得visual studio 6.0 tools 中得"package & deployment wizard",教教我
- 关于自画菜单API的问题!大家共同研究
- 怪,怪,怪真的怪!!!!!11111帮忙看看哦
- 高薪招聘
- word的问题,在线等
- 紧急!关于工具栏的图标问题!高分回报!!在线等待!
- data1.refresh也会出错?
Private 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 TypePrivate Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_RBUTTONUP = &H205Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Dim TrayI As NOTIFYICONDATA
Private Sub Form_Load()
TrayI.cbSize = Len(TrayI)
'Set the window's handle (this will be used to hook the specified window)
TrayI.hWnd = pichook.hWnd
'Application-defined identifier of the taskbar icon
TrayI.uId = 1&
'Set the flags
TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
'Set the callback message
TrayI.ucallbackMessage = WM_LBUTTONDOWN
'Set the picture (must be an icon!)
TrayI.hIcon = imgIcon(2).Picture
'Set the tooltiptext
TrayI.szTip = "Recent" & Chr$(0)
'Create the icon
Shell_NotifyIcon NIM_ADD, TrayI Me.Hide
End Sub
Private Sub Form_Unload(Cancel As Integer)
'remove the icon
TrayI.cbSize = Len(TrayI)
TrayI.hWnd = pichook.hWnd
TrayI.uId = 1&
Shell_NotifyIcon NIM_DELETE, TrayI
End
End Sub
Private Sub mnuPop_Click(Index As Integer)
Select Case Index
Case 0
MsgBox "KPD-Team 1998" + Chr$(13) + "URL: http://www.allapi.net/" + Chr$(13) + "E-Mail: [email protected]", vbInformation + vbOKOnly
Case 2
Unload Me
End Select
End Sub
Private Sub pichook_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Msg = X / Screen.TwipsPerPixelX
If Msg = WM_LBUTTONDBLCLK Then
'Left button double click
mnuPop_Click 0
ElseIf Msg = WM_RBUTTONUP Then
'Right button click
Me.PopupMenu mnuPopUp
End If
End Sub
Private Sub Timer1_Timer()
Static Tek As Integer
'Animate the icon
Me.Icon = imgIcon(Tek).Picture
TrayI.hIcon = imgIcon(Tek).Picture
Tek = Tek + 1
If Tek = 3 Then Tek = 0
Shell_NotifyIcon NIM_MODIFY, TrayI
End Sub