我有一段程序要花费较长的时间,想要把鼠标变成动态沙漏状(Screen.MousePointer = VbHourglass是静态的,结果仍然更死机差不多,效果不好).所以我用下面的方法加载一个动画图标:
Screen.MouseIcon = LoadPicture("busy.ico")
Screen.MousePointer = VbCustom
结果用静态的ico没问题,而一旦用一个动态的gif文件(沙子从上面楼下了,接着又翻转)就会有错误,:无效属性值无效(实时错误380)怎么办才可以??帮忙.文件肯定没有错误.试了几个其他动画文件仍然是一样的问题.
Screen.MouseIcon = LoadPicture("busy.ico")
Screen.MousePointer = VbCustom
结果用静态的ico没问题,而一旦用一个动态的gif文件(沙子从上面楼下了,接着又翻转)就会有错误,:无效属性值无效(实时错误380)怎么办才可以??帮忙.文件肯定没有错误.试了几个其他动画文件仍然是一样的问题.
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' API declare
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
Private Declare Function DestroyCursor Lib "user32" (ByVal hCursor As Long) As Long
Private Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
' Const declare
Private Const GCL_HCURSOR = (-12)
'
Dim AniCur As Long
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Private Sub Form_Load()
AniCur& = LoadCursorFromFile(App.Path & "\Neko.ani")
SetClassLong Me.hwnd, GCL_HCURSOR, AniCur
End SubPrivate Sub Form_Unload(Cancel As Integer)
DestroyCursor AniCur
End Sub
静态的使用ico
动态的使用cur 或ani 文件来做 光标
AniCur& = LoadCursorFromFile("c:\winnt\cursors\appstar2.ani")
SetClassLong Me.hwnd, GCL_HCURSOR, AniCur
''需要花费较多事件的代码'''''
DestroyCursor AniCur
End Sub
可是发现不行啊.事件结束以后鼠标仍然是沙漏状怎么回事啊?
使用系统的忙(vbHourglass)也兼容了无法载入动态鼠标时的处理方式。Option ExplicitPrivate Declare Function CopyCursor Lib "user32" Alias "CopyIcon" (ByVal hcur As Long) As Long
Private Declare Function GetCursor Lib "user32" () As Long
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
Private Declare Function DestroyCursor Lib "user32" (ByVal hCursor As Long) As Long
Private Declare Function SetSystemCursor Lib "user32" (ByVal hcur As Long, ByVal id As Long) As LongPrivate Const OCR_WAIT = 32514Dim hCursor As Long, hOldCursor As LongPrivate Sub Command1_Click()
Me.MousePointer = vbHourglass
'需要花费较多事件的代码...
Me.MousePointer = vbNormal
End SubPrivate Sub Form_Load()
Dim lRet As Long
hCursor = LoadCursorFromFile("c:\windows\cursors\appstar.ani")
If hCursor Then
lRet = GetCursor()
hOldCursor = CopyCursor(lRet)
lRet = SetSystemCursor(hCursor, OCR_WAIT)
End If
End SubPrivate Sub Form_Unload(Cancel As Integer)
Dim lRet As Long
If hCursor Then
lRet = SetSystemCursor(hOldCursor, OCR_WAIT)
DestroyCursor hCursor
End If
End Sub
me.MousePointer=99