文字列を描画(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