-在Windows 95系統中具有一個Windows 3.x所不具備的特性――支援動畫的游標檔案。你可以在Windows 95目錄中的Cursors子目錄下看到這些動畫的游標檔案,它們均具有副檔名*.ANI。在程式中使用相應的動畫游標能夠極大地改善程式的外觀,本文介紹了如何在你的Visual Basic應用程式中使用Windows 95所附帶的動畫游標檔案。
使用動畫游標檔案
----要在Visual Basic的應用程式中使用Windows 95所附帶的動畫游標,你需要使用下列Windows API(API)函數:
LoadCursorFormFile,用於從磁碟上傳入游標檔案;
ClipeCursor,用於將游標限制在一個固定的矩形地區內;
GetWindowRect,用於擷取該矩形地區,在下面的範例程式中就是程式主表單的本身;
SetClassLong,用於設定和提取視窗類別的資料,以使游標被顯示在表單上;
GetClassLong函數,在退出應用程式之前,需要將應用程式的預設游標設定回程式執行以前的游標,所以需要在程式運行時首先對以前的游標狀態進行備份,這項工作由該函數來完成;
DestroyCursor,在正確顯示了游標之後,需要使用該函數來取消載入的游標。
範例程式
----下面的範例程式將在表單地區內顯示出C:/WIN95/CURSORS目錄下的APPSTART.ANI動畫游標檔案,如果你的Windows 95路徑不同的話,你需要修改範例程式以正確顯示齣動畫游標。
在Visual Basic中開始一個新的工程,採用預設的方法建立Form1。
在Form1上建立一個命令按鈕控制項,採用預設的方法建立Command1。將它的Caption屬性設定為“顯示動畫游標”。
在Form1上建立第二個命令按鈕控制項,採用預設的方法建立Command2。將它的Caption屬性設定為“恢複預設游標”。
建立一個新的模組,採用預設的方法建立Module1.Bas。將如下的聲明,類型和常量語句添加到Module1.Bas的通用聲明部分中:
Option Explicit
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Const GCL_HCURSOR = (-12)
Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
Declare Function DestroyCursor Lib "user32" (ByVal hCursor As Long) As Long
Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA"
(ByVal lpFileName As String) As Long
Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,
lpRect As RECT) As Long
Declare Function SetClassLong Lib "user32" Alias "SetClassLongA"
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetClassLong Lib "user32" Alias "GetClassLongA"
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
注意上面的聲明語句需要書寫在一行內。
將如下的語句添加到Form1的通用聲明部分中:
Option Explicit
Dim mhBaseCursor As Long
Dim mhAniCursor As Long
將如下的代碼添加到Form1的Form_Load事件中:
Private Sub Form_Load()
Dim lResult As Long
mhBaseCursor = GetClassLong((Me.hwnd), GCL_HCURSOR)
End Sub
將如下的代碼添加到Command1的單擊事件中:
Private Sub Command1_Click()
Dim lResult As Long
Dim RT_FormArea As RECT
mhAniCursor = LoadCursorFromFile("c:/win95/cursors/appstart.ani")
lResult = SetClassLong((Me.hwnd), GCL_HCURSOR, mhAniCursor)
lResult = GetWindowRect((Me.hwnd), RT_FormArea)
lResult = ClipCursor(RT_FormArea)
End Sub
將如下的代碼添加到Command2的單擊事件中:
Private Sub Command2_Click()
Dim lResult As Long
Dim RT_ScreenArea As RECT
RT_ScreenArea.Top = 0
RT_ScreenArea.Left = 0
RT_ScreenArea.Bottom = Screen.Height / Screen.TwipsPerPixelX
RT_ScreenArea.Right = Screen.Width / Screen.TwipsPerPixelY
lResult = ClipCursor(RT_ScreenArea)
lResult = SetClassLong((Me.hwnd), GCL_HCURSOR, mhBaseCursor)
lResult = DestroyCursor(mhAniCursor)
End Sub
----通過按下F5鍵來運行該程式,單擊“顯示動畫游標”命令按鈕,則在表單的範圍內游標變成為APPSTART.ANI游標,並且游標被限制在表單的範圍內。單擊“恢複預設游標”命令按鈕,則表單中的游標被恢複為預設的游標。注意,在退出該範例程式之前,需要單擊“恢複預設游標”命令按鈕,否則將不能在系統中正確進行其它操作。