指定したデバイスコンテキストのウィンドウ原点を取得          <TOP>


GetWindowOrgEx 指定されたデバイスコンテキストのウィンドウ原点のx座標とy座標を取得
 

 
'================================================================
'= 指定したデバイスコンテキストのウィンドウ原点を取得
'=    (GetWindowOrgEx.bas)
'================================================================
#include "Windows.bi"

Type POINTAPI
    x As Long
    y As Long
End Type

' 指定されたデバイスコンテキストのウィンドウ原点のx座標とy座標を取得
Declare Function Api_GetWindowOrgEx& Lib "gdi32" Alias "GetWindowOrgEx" (ByVal hDC&, lpPoint As POINTAPI)

' 指定のデバイスコンテキストの論理座標基準点の座標を設定
Declare Function Api_SetWindowOrgEx& Lib "gdi32" Alias "SetWindowOrgEx" (ByVal hDC&, ByVal nX&, ByVal nY&, lpPoint As POINTAPI)

' 指定されたウィンドウのデバイスコンテキストのハンドルを取得
Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&)

' デバイスコンテキストを解放
Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&)

Var Shared Text1 As Object
Var Shared Button1 As Object

Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var pa As POINTAPI
    Var hDC As Long
    Var Ret As Long

    hDC = Api_GetDC(GethWnd)

    'ウィンドウ原点のx座標とy座標を取得
    Ret = Api_GetWindowOrgEx(hDC, pa)

    Text1.SetWindowText "x =" & Str$(pa.x) & " / y =" & Str$(pa.y)

    Ret = Api_ReleaseDC(GethWnd, hDC)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End