デフォルトカーソル描画(U) <TOP>
例ではエディットボックスのデフォルトカーソルを取得描画しています。
GetClassInfoEx クラス構造体から指定の項目の32ビット値を取得
DrawIcon アイコンを描画
GetSysColor システムの背景色を取得
GetDC デバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放
WNDCLASSEX構造体とGetClassInfoEx
参照
'================================================================ '= デフォルトカーソル描画(U)
'= (GetClassInfoEx.bas) '================================================================ #include "Windows.bi" Type WNDCLASSEX cbSize As Long '構造体サイズ style As Long 'クラススタイル lpfnWndProc As Long 'ウィンドウプロシージャ cbClsExtra As Long 'クラス32ビット値のバイト数 cbWndExtra As Long 'ウィンドウ32ビット値のバイト数 hInstance As Long 'インスタンス hIcon As Long 'アイコン hCursor As Long 'カーソル hbrBackground As Long '背景ブラシ lpszMenuName As Long 'メニュー lpszClassName As String * 255 'クラス名 hIconSm As Long * 255 '小さいアイコン End Type ' クラス構造体から指定の項目の32ビット値を取得 Declare Function Api_GetClassInfoEx& Lib "user32" Alias "GetClassInfoExA" (ByVal hInstance&, ByVal lpClassName$, lpWndClass As WNDCLASSEX) ' アイコンを描画 Declare Function Api_DrawIcon& Lib "user32" Alias "DrawIcon" (ByVal hDC&, ByVal x&, ByVal y&, ByVal exhIcon&) ' システムの背景色を取得 Declare Function Api_GetSysColor& Lib "user32" Alias "GetSysColor" (ByVal nIndex&) ' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得。その後、GDI 関数を使って、返されたデバイスコンテキスト内で描画を行える Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) Var Shared Text1 As Object Var Shared Text2 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 12 Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 12 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var WCX As WNDCLASSEX Var hDC As Long Var bCol As Long Var Ret As Long hDC = Api_GetDC(GethWnd) WCX.cbSize = Len(WCX) '構造体 サイズを設定 Ret = Api_GetClassInfoEx(ByVal 0, "EDIT", WCX) 'クラス情報取得(EDIT) Text1.SetWindowText "これは↓EditBoxのデフォルトカーソルです" Ret = Api_DrawIcon(hDC, 38, 28, WCX.hCursor) 'フォームにデフォルトカーソルを描画 Ret = Api_GetClassInfoEx(ByVal 0, "BUTTON", WCX) 'クラス情報取得(BUTTON) bCol = Api_GetSysColor(WCX.hbrBackground) Text2.SetWindowText "BUTTONの背景色は" & Chr$(13) & "R=&&H" & hex$(bCol and &HFF) & " G=&&H" & hex$((bCol and &HFF00) / 2 ^ 8) & " B=&&H" & hex$((bCol and &HFF0000) / 2 ^ 16) & " です ↓" Ret = Api_ReleaseDC(GethWnd, hDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End