在编写系统托盘鼠标右键的代码里,看到别人这么写的
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
Dim Message As Long
Message = X / Screen.TwipsPerPixelX
'判断鼠标消息,执行不同的功能
Select Case Message
Case WM_LBUTTONDOWN
'点击拖盘
Case WM_RBUTTONUP
SetForegroundWindow Me.hWnd
'按右键弹出菜单
'PopupMenu mnuPopup
End Select
End Sub 结果是正确的,问题是我就不明白了 Dim Message As Long
Message = X / Screen.TwipsPerPixelX
这个为什么要这么写呢,到底是什么意思,麻烦知道的人给我讲一下,谢谢
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
Dim Message As Long
Message = X / Screen.TwipsPerPixelX
'判断鼠标消息,执行不同的功能
Select Case Message
Case WM_LBUTTONDOWN
'点击拖盘
Case WM_RBUTTONUP
SetForegroundWindow Me.hWnd
'按右键弹出菜单
'PopupMenu mnuPopup
End Select
End Sub 结果是正确的,问题是我就不明白了 Dim Message As Long
Message = X / Screen.TwipsPerPixelX
这个为什么要这么写呢,到底是什么意思,麻烦知道的人给我讲一下,谢谢
nid.hWnd = Me.hWnd
nid.uId = vbNull
nid.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
nid.uCallBackMessage = WM_MOUSEMOVE '<======= 回调消息产生Form_MouseMove事件,然后就是像素计量单位的问题,VB把单位计量转换到Twip,而Screen.TwipsPerPixelX就是转换回来
nid.szTip = "测试" & vbNullChar
nid.hIcon = Me.Icon
Shell_NotifyIcon NIM_ADD, nid