文字列を描画(V)          <TOP>


SetBkMode バックグラウンドの塗りつぶしモード設定
TextOut 文字を描画
lstrlen 指定された文字列のバイトまたは文字の長さを返す
GetDC 指定されたウィンドウのデバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放
TRANSPARENT(1) 背景色を設定しない
 

TextOutのみの場合と、SetBkModeでTRANSPARENTを指定した場合を表しています。

 

'================================================================
'= 文字列を描画(V)
'=    (TextOut3.bas)
'================================================================
#include "Windows.bi"

' バックグラウンドの塗りつぶしモード設定
Declare Function Api_SetBkMode& Lib "gdi32" Alias "SetBkMode" (ByVal hDC&, ByVal iBkMode&)

' 文字を描画
Declare Function Api_TextOut& Lib "gdi32" Alias "TextOutA" (ByVal hDC&, ByVal nXStart&, ByVal nYStart&, ByVal lpString$, ByVal cbString&)

' 指定された文字列のバイトまたは文字の長さを返す
Declare Function Api_lstrlen& Lib "Kernel32" Alias "lstrlenA" (ByVal lpString$)

' 指定されたウィンドウのデバイスコンテキストのハンドルを取得
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
Var Shared Picture1 As Object

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

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var hDC As Long
    Var phDC As Long
    Var Str As String
    Var Ret As Long

    Str = "札幌市"

    hDC = Api_GetDC(GethWnd)
    phDC = Api_GetDC(Picture1.GethWnd)

    Ret = Api_TextOut(hDC, 10, 20, Str, Api_lstrlen(Str))
    Ret = Api_TextOut(phDC, 10, 20, Str, Api_lstrlen(Str))

    Ret = Api_SetBkMode(hDC, TRANSPARENT)
    Ret = Api_TextOut(hDC, 10, 50, Str, Api_lstrlen(Str))

    Ret = Api_SetBkMode(phDC, TRANSPARENT)
    Ret = Api_TextOut(phDC, 10, 50, Str, Api_lstrlen(Str))

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

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