キャレットを作成する          <TOP>


独自のキャレットを作成します。

CreateCaret独自のキャレットを作成する

ShowCaret キャレットを表示する

GetCaretBlinkTime キャレットのブリンク時間を取得する

 

キャレットサイズを幅10、高さ30に設定しています。

VBで実行したもの。鉛筆のBitmapを作成(色を反転しています)しキャレットとしています。

※VBでのコード

Sub Text1_GotFocus()
    hWnd& = GetFocus&()
    hBitmap& = Picture1.Picture
    Call CreateCaret(hWnd&, hBitmap&, 0, 0)
    X& = ShowCaret&(h&)
End Sub
 

参照

アイコンをカーソルに

カーソル(キャレット)をBitmapで

 

'================================================================
'= キャレットを作成する
'=    (Createcaret.bas)
'================================================================
#include "Windows.bi"

' 独自のキャレットを作成する
Declare Function Api_CreateCaret& Lib "user32" Alias "CreateCaret" (ByVal hWnd&, ByVal hBitmap&, ByVal nWidth&, ByVal nHeight&)

' キャレットを表示する
Declare Function Api_ShowCaret& Lib "user32" Alias "ShowCaret" (ByVal hWnd&)

' キャレットのブリンク時間を取得する
Declare Function Api_GetCaretBlinkTime& Lib "user32" Alias "GetCaretBlinkTime" ()

Var Shared Edit1 As Object
Var Shared Text1 As Object

Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainFOrm_Start()
    Text1.SetWindowText "ブリンクタイム:" & Trim$(Str$(Api_GetCaretBlinkTime)) & "ミリ秒"
    Edit1.SetFocus
End Sub

'================================================================
'=
'================================================================
Declare Sub Edit1_SetFocus edecl ()
Sub Edit1_SetFocus ()
    Var hWnd As Long
    Var hImage As Long
    Var nWidth As Long
    Var nHeight As Long
    Var Ret As Long

    hWnd = Edit1.GethWnd
    nWidth = 10
    nHeight = 30

    Ret = Api_CreateCaret(hWnd, 0, nWidth, nHeight)
    Ret = Api_ShowCaret(hWnd)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End