首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

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

2012-03-06 
关于系统托盘鼠标右键的问题在编写系统托盘鼠标右键的代码里,看到别人这么写的PrivateSubForm_MouseMove(B

关于系统托盘鼠标右键的问题
在编写系统托盘鼠标右键的代码里,看到别人这么写的
  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      
这个为什么要这么写呢,到底是什么意思,麻烦知道的人给我讲一下,谢谢


[解决办法]
这是利用了窗体内部处理鼠标事件的那段代码

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

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

期待高手讲解一下,想学习.....
[解决办法]
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

热点排行