指定された水平および垂直のオフセット分だけ移動          <TOP>


OffsetWindowOrgEx 指定されたデバイスコンテキストのウィンドウ原点を、指定された水平および垂直のオフセット分だけ移動
GetWindowOrgEx 指定されたデバイスコンテキストのウィンドウ原点のx座標とy座標を取得

GetDC 指定されたウィンドウのデバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放

 
'================================================================
'= 指定された水平および垂直のオフセット分だけ移動
'=    (OffsetWindowOrgEx.bas)
'================================================================
#include "Windows.bi"

Type POINTAPI
    x As Long
    y As Long
End Type

' 指定されたデバイスコンテキストのウィンドウ原点を、指定された水平および垂直のオフセット分だけ移動
Declare Function Api_OffsetWindowOrgEx& Lib "gdi32" Alias "OffsetWindowOrgEx" (ByVal hDC&, ByVal nX&, ByVal nY&, lpPoint As POINTAPI)

' 指定されたデバイスコンテキストのウィンドウ原点のx座標とy座標を取得
Declare Function Api_GetWindowOrgEx& Lib "gdi32" Alias "GetWindowOrgEx" (ByVal hDC&, 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 Picture1 As Object
Var Shared Button1 As Object
Var Shared Bitmap As Object

BitmapObject Bitmap

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

Var Shared hDC As Long

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    hDC = Api_GetDC(Picture1.GethWnd)

    Bitmap.LoadFile "Bike1.bmp"
    Picture1.DrawBitmap Bitmap, 0, 3
    Bitmap.DeleteObject
End Sub

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

    For i% = 1 To 10
        Ret = Api_OffsetWindowOrgEx(hDC, i%, 3, pa)
        Ret = Api_GetWindowOrgEx(hDC, pa)

        Picture1.Cls
        Bitmap.LoadFile "Bike1.bmp"
        Picture1.DrawBitmap Bitmap, pa.x, 3
        Bitmap.DeleteObject
        Wait 2
    Next
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_QueryClose edecl ()
Sub MainForm_QueryClose()
    Var Ret As Long

    Ret = Api_ReleaseDC(Picture1.GethWnd, hDC)
End Sub

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