任务栏图标与mousemove事件的问题!
谁能解释一下,蓝色部分的意思,X为什么会与WM_LBUTTONUP或WM_RBUTTONUP的值相等!一个坐标值,一个是消息的参数值!为什么可以这样用?
Option Explicit
Const max_tooltip As Integer = 64
Const nif_icon = &H2 '删除图标
Const NIF_MESSAGE = &H1 'NIF_MESSAGE指定uCallbackMessage有效
Const NIF_TIP = &H4 'NIF_TIP指定szTip有效
Const NIM_ADD = &H0 '添加图标到任务栏提示区
Const NIM_DELETE = &H2
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 SW_RESTORE = 9
Const SW_HIDE = 0
Private Type NOTIFYICONDATA
cbSize As Long 'cbSize是NOTIFYICONDATA结构的大小
hwnd As Long 'hWnd是当前窗口的句柄
uID As Long 'uID指定图标的标识符
uFlags As Long 'uFlags是一组参数
uCallbackmessage As Long 'uCallbackMessage是一个自定义消息,当鼠标在图标所属的正方形区域内有消息发生,比如单击了图标时,系统就会发送一个消息到uCallbackMessage中
hIcon As Long 'hIcon是图标的句柄
szTip As String * max_tooltip 'szTip指定的文字信息会在你将鼠标移到图标上时以浮动方式显示出来
End Type
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" _
(ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
'dwMessage指定你要加入?删除?还是修改图标 分别为NIM_ADD?NIM_DELETE和NIM_MODIFY
'lpData指向NOTIFYICONDATA类型变量的指针
Private nfIconData As NOTIFYICONDATA
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lMsg As Single
lMsg = X / Screen.TwipsPerPixelX
If lMsg = WM_RBUTTONUP Or lMsg = WM_LBUTTONUP Then Me.PopupMenu sys
End Sub
Private Sub Command1_Click()
nfIconData.hwnd = Me.hwnd
nfIconData.uID = Me.Icon
nfIconData.uFlags = nif_icon Or NIF_MESSAGE Or NIF_TIP
nfIconData.uCallbackmessage = WM_MOUSEMOVE
nfIconData.hIcon = Me.Icon.Handle
nfIconData.szTip = "System Tray Example" & vbNullChar
nfIconData.cbSize = Len(nfIconData)
Shell_NotifyIcon NIM_ADD, nfIconData
End Sub
Private Sub command2_Click()
Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
End Sub
Private Sub command3_Click()
ShowWindow Me.hwnd, SW_HIDE
End Sub
Private Sub command4_Click()
Unload Me
End Sub
Private Sub Command5_Click()
Me.Visible = False
End Sub
Private Sub move_Click()
Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
End Sub
Private Sub show_Click()
Me.Visible = True
End Sub
Private Sub exit_Click()
Unload Me
End Sub