LoadCursorFromFile을 사용하면 커서 파일 *.cur이나 *.ani 파일에서 마우스 커서를 로드하고, 그 마우스 커서의 핸들을 얻는다.
마우스 커서로 지정한 것은 아니고, 메모리로 마우스 커서 이미지를 로드하고 그 핸들을 얻는 것이다.

지정된 파일로부터(*.cur,*.ani) 마우스 커서를 로드한다

● 선언
Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long

● 인수

lpFileName ━ 마우스 커서 파일명(*.cur,*.ani)

● 반환

성공 ━ 로드한 커서의 핸들
실패 ━ Null


다음은 소스이다.
' 애니메이션 커서(*.ani) 파일 사용하기
Option Explicit

DefLng A-Z ' a에서 z로 시작하는 변수를 Long 형으로 한다

Private PreviousCoursorHandle  ' 이전 커서 핸들
Private AniCursorHandle  ' 에니메이션 커서 핸들

Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
Private Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long

Private Sub cmdEndAni_Click() ' 원래 커서로 복귀
    Call ReleaseCapture ' 캡처 중지
    Call SetCursor(PreviousCoursorHandle) ' 원래 커서로
    cmdEndAni.Enabled = False
    cmdStartAni.Enabled = True
End Sub

Private Sub cmdEndAni_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    cmdEndAni_Click
End Sub

Private Sub cmdStartAni_Click() ' 에니메이션 커서 지정
    Call SetCapture(cmdEndAni.hwnd) ' 폼을 벋어나도 마우스 커서 움직임을 얻도록 한다, 따라서 폼을 벋어나도 마우스 커서가 변경되지 않도록 한다
    PreviousCoursorHandle = SetCursor(AniCursorHandle) ' 커서를 로드한 커서로 지정한다
    cmdEndAni.Enabled = True
    cmdStartAni.Enabled = False
End Sub

Private Sub Form_Load()
    AniCursorHandle = LoadCursorFromFile(App.Path & "\macwait.ani")
    cmdEndAni.Enabled = False
End Sub

+ Recent posts