Шаг 66 - Использование анимационных курсоров

Неизвестно по какой причине, но в свойствах формы или элемента управления нельзя использовать анимированные курсоры (ani). При попытке присваивания свойству Mouse Pointer курсора ani Вы тут же получите сообщение об ошибке.

gif/66_1.gif (4378 b)

Но использовать их можно. Для этого нам придется применить функцию SetClassLong. В этом нет ничего страшного. Не важно, что Вы программируете на VB все равно у Вас есть обычные окна, а у этого окна структура, в которой описаны всякие свойства, в том числе и какой у окна курсор. Подробнее читайте "Шаг 4 - Окно Windows на С", там описано как вообще создается окно. О самой структуре можете прочитать в "Подробности - Структура WNDCLASS". Тот же самый подход применяют и разработчики на MFC, смотрите "Шаг 134 - Смена курсора". Итак, нам нужно эту функцию описать. Подробности описания читайте в "Шаг 17 - Win32 API и VBA". Мы опишем еще и функцию LoadCursorFromFile для того, чтобы прочитать курсор из файла.

' изменения в классе окна
Private Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long,
	ByVal nindex As Long, ByVal dwNewLong As Long) As Long
' функция чтения курсора из файла
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal IpFileName As String) As Long

Ну и применим их для наших нужд. В момент загрузки формы:

Private Sub Form_Load()
Dim hCursor As Long
hCursor = LoadCursorFromFile("d:/vb/1/Globe.ani")
hOldCursor = SetClassLong(Form1.hwnd, -12, hCursor)
End Sub

Это странное число -12 указывает на то, какая запись меняется в структуре, для курсора -12. И теперь на форме у нас будет курсор с анимацией.

gif/66_2.gif (2378 b)


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.