キャレット幅の取得と設定          <TOP>


SystemParametersInfo システム全体に関するパラメータを取得・設定
SPI_GETCARETWIDTH(&H2006) キャレット幅を取得
SPI_SETCARETWIDTH(&H2007) キャレット幅を設定
SPIF_SENDWININICHANGE(&H2) 全てのアプリケーションに通知して更新
SPIF_UPDATEINIFILE(&H1) ユーザープロファイルの更新を指定
 

 

'================================================================
'= キャレット幅の取得と設定
'=    (CaretWidth.bas)
'================================================================
#include "Windows.bi"

' システム全体に関するパラメータを取得・設定
Declare Function Api_SystemParametersInfo& Lib "user32" Alias "SystemParametersInfoA" (ByVal uiAction&, ByVal uiParam&, pvParam As Any, ByVal fWinIni&)

#define SPI_GETCARETWIDTH &H2006        'キャレット幅を取得
#define SPI_SETCARETWIDTH &H2007        'キャレット幅を設定
#define SPIF_SENDWININICHANGE &H2       '全てのアプリケーションに通知して更新
#define SPIF_UPDATEINIFILE &H1          'ユーザープロファイルの更新を指定

Var Shared Edit1 As Object
Var Shared Text1 As Object
Var Shared Button1 As Object
Var Shared Button2 As Object

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

Var Shared OldCaretWidth As Long

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var Ret As Long

    Edit1.SetWindowText "F-Basic Programming Tips"

    Ret = Api_SystemParametersInfo(SPI_GETCARETWIDTH, 0, OldCaretWidth, 0)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var CaretWidth As Long
    Var Ret As Long

    'キャレットの幅を指定
    CaretWidth = 10

    'キャレットの幅を表示
    Text1.SetWindowtext "Caret Width =" & Str$(CaretWidth) & " Pixel"

    'キャレットの幅を設定
    Ret = Api_SystemParametersInfo(SPI_SETCARETWIDTH, 0, ByVal CaretWidth, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)

    Edit1.SetFocus
End Sub

'================================================================
'=
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    Var Ret As Long

    'キャレットの幅を表示
    Text1.SetWindowtext "Caret Width =" & Str$(OldCaretWidth) & " Pixel"

    'キャレットの幅を設定
    Ret = Api_SystemParametersInfo(SPI_SETCARETWIDTH, 0, ByVal OldCaretWidth, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)

    Edit1.SetFocus
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_QueryClose edecl ()
Sub MainForm_QueryClose()
    Button2_on
End Sub

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