デフォルトカーソル描画(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":スクロールバー

参照

デフォルトカーソル描画(U)
 

'================================================================
'= デフォルトカーソル描画(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