Private Sub Command1_Click()
MsgBox Str((Form1.Top + Command1.Top) / Screen.TwipsPerPixelY)
MsgBox Str((Form1.Left + Command1.Left) / Screen.TwipsPerPixelX)
End Sub

解决方案 »

  1.   

    1、将Form的ScaleMode设为3
    2、
    用API函数ClientToScreentype POINTAPI
        x as long
        y as long
    end type    dim ptCmd as POINTAPI
        with ptCmd
             .x=commandbutton.left
             .y=commandbutton.top
        end with    ClientToScreen commandbutton.hwnd,ptCmd
        msgbox cstr(ptcmd.x)
        msgbox cstr(ptcmd.y)
      

  2.   

     Jneu(沧海桑田) 说的没有考虑到caption和FORM边框
    阿木说的对,用ClienttoScreen,在DELPHI中不是也一样用这个函数的吗!
      

  3.   

    caption和FORM边框的宽度是固定的,是吧,加上来就可以了,是多少?
      

  4.   

    to basey(阿Q):你不记得Caption的高度可以在显示器的属性页里调整的吗?:)
      

  5.   

    to :basey(阿Q) 
    caption和FORM边框会根据FORM不同的类型,大小不定
    除非你用
    select case Me.BorderStyle
    case 1

    end select
    加以区分,再将其值进行计算