文字列を指定のデバイスコンテキストに描画          <TOP>


PolyTextOut 指定されたデバイスコンテキストで現在選択されているフォントおよびテキストの色を使って、文字列を描画
SetBkMode バックグラウンドの塗りつぶしモード設定
GetDC 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放

 

'================================================================
'= 文字列を指定のデバイスコンテキストに描画
'=    (PolyTextOut.bas)
'================================================================
#include "Windows.bi"

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

Type POLYTEXT
    x       As Long
    y       As Long
    n       As Long
    lpStr   As Long
    uiFlags As Long
    rcl     As RECT
    pdx     As Long
End Type

' 指定されたデバイスコンテキストで現在選択されているフォントおよびテキストの色を使って、文字列を描画
Declare Function Api_PolyTextOut& Lib "gdi32" Alias "PolyTextOutA" (ByVal hDC&, pptxt As POLYTEXT, ByVal cStrings&)

' バックグラウンドの塗りつぶしモード設定
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&)

#define TRANSPARENT 1                   '背景色を設定しない

Var Shared Button1 As Object

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

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var pt As POLYTEXT
    Var hDC As Long
    Var mStr As String
    Var Ret As Long

    'デバイスコンテキストのハンドルを取得
    hDC = Api_GetDC(GethWnd)

    mStr = "札幌市白石区"

    'POLYTEXT構造体を設定
    pt.n = Len(mStr)
    pt.lpStr = StrAdr(mStr & Chr$(0))
    pt.x = 20
    pt.y = 30

    'sDCに文字列を描画
    Ret = Api_SetBkMode(hDC, TRANSPARENT)
    Ret = Api_PolyTextOut(hDC, pt, 1)

    'hDCの解放
    Ret = Api_ReleaseDC(GethWnd, hDC)
End Sub

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