使用Win95的動畫游標

來源:互聯網
上載者:User

-在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路徑不同的話,你需要修改範例程式以正確顯示齣動畫游標。

  1. 在Visual Basic中開始一個新的工程,採用預設的方法建立Form1。

  2. 在Form1上建立一個命令按鈕控制項,採用預設的方法建立Command1。將它的Caption屬性設定為“顯示動畫游標”。

  3. 在Form1上建立第二個命令按鈕控制項,採用預設的方法建立Command2。將它的Caption屬性設定為“恢複預設游標”。

  4. 建立一個新的模組,採用預設的方法建立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

    注意上面的聲明語句需要書寫在一行內。

  5. 將如下的語句添加到Form1的通用聲明部分中:


    Option Explicit
    Dim mhBaseCursor As Long
    Dim mhAniCursor As Long

  6. 將如下的代碼添加到Form1的Form_Load事件中:


    Private Sub Form_Load()
        Dim lResult As Long
       
        mhBaseCursor = GetClassLong((Me.hwnd), GCL_HCURSOR)
    End Sub

  7. 將如下的代碼添加到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

  8. 將如下的代碼添加到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游標,並且游標被限制在表單的範圍內。單擊“恢複預設游標”命令按鈕,則表單中的游標被恢複為預設的游標。注意,在退出該範例程式之前,需要單擊“恢複預設游標”命令按鈕,否則將不能在系統中正確進行其它操作。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.