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

解决方案 »

  1.   

    Private   Sub   Form_MouseMove应该是Private   Sub   Form_MouseDown
      

  2.   

    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