指定したデバイスコンテキストのウィンドウ原点を指定 <TOP>
SetViewportOrgEx デバイスのどの点がウィンドウの原点を指しているのか指定
TextOut
文字を描画
GetDC
指定されたウィンドウのデバイスコンテキストのハンドルを取得
ReleaseDC
デバイスコンテキストを解放
ビューポートを「70,40」に変更した点がTextOut(0,0・・・の位置になる。
'================================================================ '= 指定したデバイスコンテキストのウィンドウ原点を指定 '= (SetViewportOrgEx.bas) '================================================================ #include "Windows.bi" Type POINTAPI x As Long y As Long End Type #define TRANSPARENT 1 '背景色を設定しない ' デバイスのどの点がウィンドウの原点を指しているのか指定 Declare Function Api_SetViewportOrgEx& Lib "gdi32" Alias "SetViewportOrgEx" (ByVal hDC&, ByVal nX&, ByVal nY&, lpPoint As POINTAPI) ' 指定されたデバイスコンテキストのビューポートの原点のx座標とy座標を取得 Declare Function Api_GetViewportOrgEx& Lib "gdi32" Alias "GetViewportOrgEx" (ByVal hDC&, lpPoint As POINTAPI) ' 文字を描画 Declare Function Api_TextOut& Lib "gdi32" Alias "TextOutA" (ByVal hDC&, ByVal nXStart&, ByVal nYStart&, ByVal lpString$, ByVal cbString&) ' バックグラウンドの塗りつぶしモード設定 Declare Function Api_SetBkMode& Lib "gdi32" Alias "SetBkMode" (ByVal hDC&, ByVal iBkMode&) ' 指定されたウィンドウのデバイスコンテキストのハンドルを取得 Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) Var Shared Button1 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var pa As POINTAPI Var hDC As Long Var txt As String Var Ret As Long hDC = Api_GetDC(GethWnd) 'ビューポートの原点を変更 Ret = Api_SetViewportOrgEx(hDC, 70, 40, pa) Ret = Api_SetBkMode(hDC, TRANSPARENT) '変更した原点に文字列を描画 txt = "TextOut(hDC, 0, 0, ・・・" Ret = Api_TextOut(hDC, 0, 0, txt, Len(txt)) txt = "TextOut(hDC, -70, -40, ・・・" Ret = Api_TextOut(hDC, -70, -40, txt, Len(txt)) Ret = Api_GetViewportOrgEx(hDC, pa) A% = MessageBox("", Str$(pa.x) & "/" & Str$(pa.y), 0, 2) Ret = Api_ReleaseDC(GethWnd, hDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End