Vba 如何将相对对象坐标转换为绝对坐标

Vba 如何将相对对象坐标转换为绝对坐标,vba,ms-access,Vba,Ms Access,我在表单上有一个按钮,可以打开弹出菜单。我需要打开按钮下方的弹出菜单显示弹出窗口函数接受绝对桌面坐标。如果我知道表单上的按钮位置,如何计算绝对坐标 目前我正在使用以下技巧: Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hW

我在表单上有一个按钮,可以打开弹出菜单。我需要打开按钮下方的弹出菜单<代码>显示弹出窗口函数接受绝对桌面坐标。如果我知道表单上的按钮位置,如何计算绝对坐标

目前我正在使用以下技巧:

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hWnd As Long, lpRect As RECT) As Long
Private Declare Function GetFocus Lib "user32" () As Long

Private Sub Command1_Click()
    Dim r As RECT
    Dim chwnd As Long
    Dim h As Long

    Me.Text1.SetFocus
    chwnd = GetFocus
    Me.Command1.SetFocus
    h = GetWindowRect(chwnd, r)
    CommandBars("PopupMenu").ShowPopup r.Left, r.Bottom
End Sub
它可以工作,但按钮下方的额外文本框
Text1
允许使用API获取绝对位置,这并不是一个很好的解决方案,它希望计算而不是使用人工“书签”