Option ExplicitPrivate Sub Form_Load()
 Me.ScaleMode = vbPixels
 
End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Text1.Text = Me.Left
  Text2.Text = Me.Top
  
End Sub
*******************************************************************************
以上代码;当鼠标在窗体上移动时文本框里得到窗体在屏幕上的坐标位置。
但 得到的好象是 Twip 我想得到的是 Pixel 请问应该如何做呢?
切望老师们帮助;先谢谢!

解决方案 »

  1.   

    xPixel = xTwip \ Screen.TwipsPerPixelX
    yxPixel = yTwip \ Screen.TwipsPerPixelY
      

  2.   

    在设计环境改form的属性ScaleMode = vbPixels
      

  3.   

    汗。。错了,你要得到form的top和left?
    就用viena的方法,twip是vb自己的单位,不同的分辨率有不同的Screen.TwipsPerPixel值,Screen.TwipsPerPixelX,Screen.TwipsPerPixelY是得到当前分辨率下1pixel=多少twip的。
      

  4.   

    老大那请你把我上面的代码改一下让文本框里显示的是 Pixel 而不是 Twip
    也请您先在VB里运行一下再贴上来好吗!
      

  5.   

    yingxiangchen(Ivan) 别捣乱!
      

  6.   

    Private Sub Command1_Click()
      Text1.Text = Me.Left / Screen.TwipsPerPixelX
      Text2.Text = Me.Top / Screen.TwipsPerPixelY
    End Sub
      

  7.   

    晕,不明白妳的意思Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Text1.Text = Me.Left \ Screen.TwipsPerPixelX
        Text2.Text = Me.Top \ Screen.TwipsPerPixelY
    End Sub为什么要放在鼠标移动事件里呢?
    鼠标移动会改变窗体的位置吗?
      

  8.   

    to MmMVP
    像素必然是整数,应该用整数除法\
      

  9.   

    //也请您先在VB里运行一下再贴上来好吗
    给你的是参考,而不是可运行代码,
    明显的XY坐标,难道看不懂吗?来这里是学习的而不是要代码,学会了,可以举一反三;
    否则永远都不会,永远要去问别人,累不累啊?
      

  10.   

    Private Sub Form_Load()
     'Me.ScaleMode = vbPixels
     
    End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
     ' Text1.Text = Me.Left
     ' Text2.Text = Me.Top
      
      Text3.Text = Screen.TwipsPerPixelX
      Text4.Text = Screen.TwipsPerPixelY
      
      Text1.Text = Me.Left / Screen.TwipsPerPixelX
      Text2.Text = Me.Top / Screen.TwipsPerPixelY
      
    End Sub