指定した矩形領域を無効領域に <TOP>
指定した領域に文字を描画し、指定時間経過後その領域を無効化し終了します。
CreateDC 指定されたデバイスのデバイスコンテキストを、指定された名前で作成
DeleteDC
指定されたデバイスコンテキストを削除
DrawText
文字列を指定領域に出力
SetTextColor デバイスコンテキストの文字色を変更
WindowFromDC デバイスコンテキストからウィンドウハンドルを取得
InvalidateRect クライアント領域の一部を無効領域に
SetBkMode
バックグラウンドの塗りつぶしモード設定
TRANSPARENT(1) 背景色を設定しない
指定領域(80,56)-(250,76)に「北海道札幌市白石区」という文字列を描画し、10までカウント後その領域を無効化し終了します。
'================================================================ '= 指定した矩形領域を無効領域に '= (InvalidateRect.bas) '================================================================ #include "Windows.bi" Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type ' 指定されたデバイスのデバイスコンテキストを、指定された名前で作成 Declare Function Api_CreateDC& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName$, lpDeviceName As Any, lpOutput As Any, ByVal lpInitData As Any) ' 指定されたデバイスコンテキストを削除 Declare Function Api_DeleteDC& Lib "gdi32" Alias "DeleteDC" (ByVal hDC&) ' 文字列を指定領域に出力 Declare Function Api_DrawText& Lib "user32" Alias "DrawTextA" (ByVal hDC&, ByVal lpStr$, ByVal nCount&, lpRect As RECT, ByVal wFormat&) ' デバイスコンテキストの文字色を変更 Declare Function Api_SetTextColor& Lib "gdi32" Alias "SetTextColor" (ByVal hDC&, ByVal crColor&) ' デバイスコンテキストからウィンドウハンドルを取得 Declare Function Api_WindowFromDC& Lib "user32" Alias "WindowFromDC" (ByVal dDC&) ' クライアント領域の一部を無効領域に Declare Function Api_InvalidateRect& Lib "user32" Alias "InvalidateRect" (ByVal hWnd&, lpRect As RECT, ByVal bErase&) ' バックグラウンドの塗りつぶしモード設定 Declare Function Api_SetBkMode& Lib "gdi32" Alias "SetBkMode" (ByVal hDC&, ByVal iBkMode&) #define TRANSPARENT 1 '背景色を設定しない Var Shared Timer1 As Object Var Shared Button1 As Object Var Shared Text(2) As Object Var Shared Edit(2) As Object Timer1.Attach GetDlgItem("Timer1") Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 For i = 0 To 2 Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) : Text(i).SetFontSize 14 Edit(i).Attach GetDlgItem("Edit" & Trim$(Str$(i + 1))) : Edit(i).SetFontSize 14 Next Var Shared count As Integer Var Shared hWnd As Long Var Shared rct As RECT '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Timer1.SetInterval 50 Timer1.Enable 0 End Sub '================================================================ '= '================================================================ Declare Sub Timer1_Timer edecl () Sub Timer1_Timer() Var hDC As Long Var txt As String Var Red As Byte Var Green As Byte Var Blue As Byte Var col As Long Var Ret As Long txt = "北海道札幌市白石区" 'テキストを描画する矩形を設定 rct.Left = 80 rct.Top = 56 rct.Right = 250 rct.Bottom = 76 'テキストカラーの数値を取得 Red = Val(Edit(0).GetWindowText) Green = Val(Edit(1).GetWindowText) Blue = Val(Edit(2).GetWindowText) 'デスクトップのデバイスコンテキストを取得 hDC = Api_CreateDC("Display", ByVal 0, ByVal 0, ByVal 0) 'ウィンドウハンドルを取得 hWnd = Api_WindowFromDC(hDC) 'テキストのカラーを設定 Ret = Api_SetTextColor(hDC, RGB(Red, Green, Blue)) '背景色を透過 Ret = Api_SetBkMode(hDC, TRANSPARENT) 'テキストを描画 Ret = Api_DrawText(hDC, txt, Len(txt), rct, 0) 'カウント開始 count = count + 1 SetWindowText "InvalidateRect " & Str$(count) 'カウント10を経過した場合 If count = 10 Then '矩形領域内のテキストを消去 Ret = Api_InvalidateRect(hWnd, rct, 0) Ret = Api_DeleteDC(hDC) SetWindowText "InvalidateRect" Timer1.Enable 0 End If End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Timer1.Enable -1 count = 0 End Sub '================================================================ '= '================================================================ Declare Sub MainForm_QueryClose edecl () Sub MainForm_QueryClose() Var Ret As Long Ret = Api_InvalidateRect(hWnd, rct, 0) Ret = Api_DeleteDC(hDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End