マウスカーソルの変更          <TOP>


ここでは、マウスカーソルをアニメーション形式に変更してみます。

GetWindowsDirectory Winodws フォルダのパス名を取得

CopyIcon カーソルのコピーを作成

LoadCursorFromFile カーソルをファイルから取得

SetSystemCursor システムのマウスカーソルを変更

GetCursor 現在使用しているマウスカーソルのハンドルを取得

 

カーソルは『コントロールパネル』→『マウス』→『ポインタ』→『参照』で見ることができます。

 

'================================================================
'= マウスカーソルの変更
'=    (SetCursor.bas)
'================================================================
#include "Windows.bi"

' Windowsディレクトリのパス名を取得
Declare Function Api_GetWindowsDirectory& Lib "Kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer$, ByVal nSize&)

' カーソルのコピーを作成
Declare Function Api_CopyIcon& Lib "user32" Alias "CopyIcon" (ByVal hIcon&)

' カーソルをファイルから取得
Declare Function Api_LoadCursorFromFile& Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName$)

' システムのマウスカーソルを変更
Declare Function Api_SetSystemCursor& Lib "user32" Alias "SetSystemCursor" (ByVal hcur&, ByVal id&)

' 現在使用しているマウスカーソルのハンドルを取得
Declare Function Api_GetCursor& Lib "user32" Alias "GetCursor" ()

#define OCR_NORMAL 32512                'Windows組込ビットマップ

Var Shared CurrenthCurs As Long
Var Shared TempCurs As Long
Var Shared NewhCurs As Long

Var Shared Button1 As Object
Var Shared Button2 As Object

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

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var myDir As String
    Var lDir As Long
    Var Ret As Long

    myDir = Space$(255)

    '現在のカーソルを取得しコピーを作成
    CurrenthCurs = Api_GetCursor()
    TempCurs = Api_CopyIcon(CurrenthCurs)

    'Windowsディレクトリのパス名を取得
    lDir = Api_GetWindowsDirectory(myDir, 255)

    'Horse.aniまでのパスを取得
    myDir = Left$(myDir, lDir) & "\cursors\horse.ani"

    'カーソルをファイルから取得
    NewhCurs = Api_LoadCursorFromFile(myDir)

    'システムのマウスカーソルを変更
    Ret = Api_SetSystemCursor(NewhCurs, OCR_NORMAL)
End Sub

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

    'システムカーソルを元に戻す
    Ret = Api_SetSystemCursor(TempCurs, OCR_NORMAL)
End Sub

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