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


例ではエディットボックスのデフォルトカーソルを取得描画しています。

GetClassInfoEx クラス構造体から指定の項目の32ビット値を取得

DrawIcon アイコンを描画

GetSysColor システムの背景色を取得

GetDC デバイスコンテキストのハンドルを取得

ReleaseDC デバイスコンテキストを解放

 

WNDCLASSEX構造体とGetClassInfoEx

参照

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

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