关于系统托盘鼠标右键的问题

prince 2007-08-27 02:51:03
在编写系统托盘鼠标右键的代码里,看到别人这么写的
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
这个为什么要这么写呢,到底是什么意思,麻烦知道的人给我讲一下,谢谢
...全文
168 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kmlxk0 2007-08-31
  • 打赏
  • 举报
回复
nid.cbSize = Len(nid)
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
chuting1 2007-08-31
  • 打赏
  • 举报
回复
要不要,QQ80027576
嗷嗷叫的老马 2007-08-30
  • 打赏
  • 举报
回复
这是利用了窗体内部处理鼠标事件的那段代码

好处是省了自己去写一个子类化过程并挂在窗体上.....

至于为什么要除那个值,我也不明白.....可能实际的鼠标消息与VB鼠标事件这里面的消息之间有某种固定的联系吧.....

期待高手讲解一下,想学习.....
prince 2007-08-30
  • 打赏
  • 举报
回复
怎么呢,怎么没有人告诉我呢,是大家都不知道,还是知道了都不告诉我
prince 2007-08-28
  • 打赏
  • 举报
回复
就没有人能告诉我?
prince 2007-08-27
  • 打赏
  • 举报
回复
Private Sub Form_MouseMove应该是Private Sub Form_MouseDown

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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