Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоComboВсе проекты

Объясните, пожалуйста, что делает данный кусочек кода на Бейсике, подробно

Хелен Ученик (207), на голосовании 12 лет назад
Он, в принципе, как-то меняет указатели, просто мне завтра этот код на лабораторной преподу показывать, а как он работае - не пойму

Добавьте 2 CommandButton на форму

Const GCL_HCURSOR = -12
Private Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
Private Declare Function DestroyCursor Lib "user32" (ByVal hCursor As Any) As Long
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
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 GetClassLong Lib "user32" Alias "GetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Dim lResult As Long
Dim mhAniCursor As Long
Dim mhAniCursor2 As Long
Private Sub Command1_Click()
'Replace 'C:\windows\cursors\hourglas.ani' with your ANI Cursor
mhAniCursor = LoadCursorFromFile("C:\windows\cursors\hourglas.ani")
lResult = SetClassLong((hwnd), GCL_HCURSOR, mhAniCursor)
End Sub
Private Sub Command2_Click()
lResult = SetClassLong((hwnd), GCL_HCURSOR, mhBaseCursor)
lResult = DestroyCursor(mhAniCursor)
End Sub
Private Sub Form_Load()
mhBaseCursor = GetClassLong((hwnd), GCL_HCURSOR)
End Sub
Private Sub Form_Unload(Cancel As Integer)
lResult = SetClassLong((hwnd), GCL_HCURSOR, mhBaseCursor)
lResult = DestroyCursor(mhAniCursor)
End Sub
Голосование за лучший ответ
Олег Знаток (287) 12 лет назад
!!! Здесь определяем функции которые будем использовать и указываем, что они находятся в системной библиотеке user32.dll

Private Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
Private Declare Function DestroyCursor Lib "user32" (ByVal hCursor As Any) As Long
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
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 GetClassLong Lib "user32" Alias "GetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

!!! Здесь определяем свои переменные
Dim lResult As Long
Dim mhAniCursor As Long
Dim mhAniCursor2 As Long

!!! Процедура для первой кнопки
Private Sub Command1_Click()
'Replace 'C:\windows\cursors\hourglas.ani' with your ANI Cursor
!!! загружаем курсор из файла "C:\windows\cursors\hourglas.ani"
mhAniCursor = LoadCursorFromFile("C:\windows\cursors\hourglas.ani")
!!! устанавливаем загруженный курсор вместо стандартного GCL_HCURSOR
lResult = SetClassLong((hwnd), GCL_HCURSOR, mhAniCursor)
End Sub

!!! Процедура для второй кнопки
Private Sub Command2_Click()
!!!Устанавливаем курсор GCL_HCURSOR из запомненной ранее переменной !!!mhBaseCursor
lResult = SetClassLong((hwnd), GCL_HCURSOR, mhBaseCursor)
!!! уничтожаем курсор mhAniCursor
lResult = DestroyCursor(mhAniCursor)
End Sub

!!! Эта процедура запускается автоматом при запуске формы и получает указатель на курсор GCL_HCURSOR (песочные часы) , запоминаем его в переменной mhBaseCursor
Private Sub Form_Load()
mhBaseCursor = GetClassLong((hwnd), GCL_HCURSOR)
End Sub

!!! Эта процедура запускается автоматом при выгрузке формы
Private Sub Form_Unload(Cancel As Integer)
!!!Устанавливаем курсор GCL_HCURSOR из запомненной ранее переменной !!!mhBaseCursor
lResult = SetClassLong((hwnd), GCL_HCURSOR, mhBaseCursor)
!!! уничтожаем курсор mhAniCursor
lResult = DestroyCursor(mhAniCursor)
End Sub
Похожие вопросы