程序自动隐藏到系统托盘的新问题????????

lkz912 2002-01-05 10:44:36

我用以下代码实现把程序自动隐藏到系统托盘,在没有加Toolbar控件时,程序隐藏后,鼠标左键双击图标可以重新显示程序;但我加上Toolbar控件,鼠标的左键对系统托盘的图标操作就没有反应了,右键可以。请教各位高手如何解决???????

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 Type

Const NIM_ADD = 0
Const NIM_MODIFY = 1
Const NIM_DELETE = 2
Const NIF_MESSAGE = 1
Const NIF_ICON = 2
Const NIF_TIP = 4

Const WM_MOUSEMOVE = &H200
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Const WM_LBUTTONDBLCLK = &H203
Const WM_RBUTTONDOWN = &H204
Const WM_RBUTTONUP = &H205
Const WM_RBUTTONDBLCLK = &H206
Const WM_MBUTTONDOWN = &H207
Const WM_MBUTTONUP = &H208
Const WM_MBUTTONDBLCLK = &H209

Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function Shell_NotifyIconA Lib "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Integer

Private Function setNOTIFYICONDATA(hwnd As Long, ID As Long, Flags As Long, CallbackMessage As Long, Icon As Long, Tip As String) As NOTIFYICONDATA
Dim nidTemp As NOTIFYICONDATA

nidTemp.cbSize = Len(nidTemp)
nidTemp.hwnd = hwnd
nidTemp.uID = ID
nidTemp.uFlags = Flags
nidTemp.uCallbackMessage = CallbackMessage
nidTemp.hIcon = Icon
nidTemp.szTip = Tip & Chr$(0)

setNOTIFYICONDATA = nidTemp
End Function

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
If Not Visible Then
Select Case x \ Screen.TwipsPerPixelX
Case WM_MOUSEMOVE
MsgBox "MouseMove!"
Case WM_LBUTTONDOWN
MsgBox " Left MouseDown"
Case WM_LBUTTONUP
MsgBox "Left MouseUp"
Case WM_LBUTTONDBLCLK
MsgBox "Left DoubleClick"
Visible = True
WindowState = vbNormal
Dim hProcess As Long
GetWindowThreadProcessId hwnd, hProcess
AppActivate hProcess
Case WM_RBUTTONDOWN
MsgBox "rOK"
MsgBox "Right MouseDown"
Case WM_RBUTTONUP
MsgBox "Right MouseUp"
Case WM_RBUTTONDBLCLK
MsgBox "Right DoubleClick"
End Select
End If
End Sub

Private Sub Del()
Dim i As Integer
Dim nid As NOTIFYICONDATA

nid = setNOTIFYICONDATA(Form1.hwnd, vbNull, NIF_MESSAGE Or NIF_ICON Or NIF_TIP, vbNull, Form1.Icon, "")

i = Shell_NotifyIconA(NIM_DELETE, nid)

End Sub

Private Sub Add()
Dim i As Integer
Dim s As String
Dim nid As NOTIFYICONDATA

s = "ToolTipText Here!"
nid = setNOTIFYICONDATA(Me.hwnd, vbNull, NIF_MESSAGE Or NIF_ICON Or NIF_TIP, WM_MOUSEMOVE, Me.Icon, s)
i = Shell_NotifyIconA(NIM_ADD, nid)

WindowState = vbMinimized
Visible = False
End Sub


请教各位高手如何解决???????
...全文
89 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ferrytang 2002-01-05
  • 打赏
  • 举报
回复
路过!

742

社区成员

发帖
与我相关
我的任务
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧