デフォルトカーソル描画(T) <TOP>
例ではエディットボックスのデフォルトカーソルを取得描画しています。
GetClassInfo クラス情報を取得
DrawIcon アイコンを描画
GetSysColor システムの背景色を取得
GetDC デバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放
WNDCLASS構造体とGetClassInfo
Ret = Api_DrawIcon(hDC, 38, 28, WCX.hCursor)での38,28は矢印の位置に表示したかっただけ・・・
クラス名
"BUTTON" :ボタンコントロール(ボタン・ラジオ・チェック・グループ)
"EDIT" :エディットボックス
"STATIC" :テキストボックス
"COMBOBOX" :コンボボックス
"LISTBOX" :リストボックス
"SCROLLBAR":スクロールバー
参照
'================================================================ '= デフォルトカーソル描画(T)
'= (GetClassInfo.bas) '================================================================ #include "Windows.bi" Type WNDCLASS style As Long 'ウィンドウのスタイル lpfnwndproc As Long 'ウィンドウプロシージャ cbClsextra As Long '補助メモリ cbWndExtra2 As Long '補助メモリ hInstance As Long 'インスタンスハンドル hIcon As Long 'アイコン hCursor As Long '背景ブラシ hbrBackground As Long 'カーソル lpszMenuName As String * 255 'メニュー名 lpszClassName As String * 255 'クラス名 End Type ' クラス情報を取得 Declare Function Api_GetClassInfo& Lib "user32" Alias "GetClassInfoA" (ByVal hInstance&, ByVal lpClassName$, lpWndClass As WNDCLASS) ' アイコンを描画 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 wc As WNDCLASS Var hDC As Long Var bCol As Long Var Ret As Long hDC = Api_GetDC(GethWnd) '構造体斎須を設定 Ret = Api_GetClassInfo(ByVal 0, "EDIT", wc) 'クラス情報取得(EDIT) Text1.SetWindowText "これは↓EditBoxのデフォルトカーソルです" Ret = Api_DrawIcon(hDC, 38, 28, wc.hCursor) 'フォームにデフォルトカーソルを描画 Ret = Api_GetClassInfo(ByVal 0, "BUTTON", wc) 'クラス情報取得(BUTTON) bCol = Api_GetSysColor(wc.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