デバイスコンテキストの状態保存と復元(U) <TOP>
SaveDC
指定のデバイスコンテキストの現在の状態を保存
RestoreDC
SaveDC関数で保存したデバイスコンテキストを復元
SetTextColor デバイスコンテキストの文字色を変更
SetBkMode
バックグラウンドの塗りつぶしモード設定
TextOut
文字を描画
GetDC
指定されたウィンドウのデバイスコンテキストのハンドルを取得
ReleaseDC
デバイスコンテキストを解放
'================================================================ '= デバイスコンテキストの状態保存と復元(U) '= (SaveDC.bas) '================================================================ #include "Windows.bi" ' 指定のデバイスコンテキストの現在の状態を保存 Declare Function Api_SaveDC& Lib "gdi32" Alias "SaveDC" (ByVal hDC&) ' SaveDC関数で保存したデバイスコンテキストを復元 Declare Function Api_RestoreDC& Lib "gdi32" Alias "RestoreDC" (ByVal hDC&, ByVal nSaveDC&) ' デバイスコンテキストの文字色を変更 Declare Function Api_SetTextColor& Lib "gdi32" Alias "SetTextColor" (ByVal hDC&, ByVal crColor&) ' バックグラウンドの塗りつぶしモード設定 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_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 hDC As Long Var txt As String Var Ret As Long hDC = Api_GetDC(GethWnd) Ret = Api_SetBkMode(hDC, TRANSPARENT) txt = "DCに赤を設定" Ret = Api_SetTextColor(hDC, RGB(255, 0, 0)) Ret = Api_TextOut(hDC, 10, 5, txt, Len(txt)) Ret = Api_SaveDC(hDC) 'DCに赤を設定したことを保存 txt = "DCに緑を設定" Ret = Api_SetTextColor(hDC, RGB(0, 255, 0)) Ret = Api_TextOut(hDC, 10, 21, txt, Len(txt)) Ret = Api_SaveDC(hDC) 'DCに緑を設定したことを保存 txt = "DCに青を設定" Ret = Api_SetTextColor(hDC, RGB(0, 0, 255)) Ret = Api_TextOut(hDC, 10, 37, txt, Len(txt)) txt = "直前に保存したDCを復元" Ret = Api_RestoreDC(hDC, -1) Ret = Api_TextOut(hDC, 10, 53, txt, Len(txt)) txt = "その前に保存したDCを復元" Ret = Api_RestoreDC(hDC, -1) Ret = Api_TextOut(hDC, 10, 69, txt, Len(txt)) Ret = Api_ReleaseDC(GethWnd, hDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End