Страница: 1 |
Страница: 1 |
Вопрос: Проблемы с vbHourglass
Добавлено: 07.08.05 01:29
Автор вопроса: Lister | ICQ: 298621256
Возникла проблема: у меня в некоторых случаях, например при чтении большого файла, не работает код Screen.MousePointer = vbHourglass
Использую DoEvents - не помогает :(
В чем проблема? Очень нужно изменить указатель!!! Спасите!
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 08.08.05 18:25
да не может быть, сначала меняй курсор, потом читай файл, как закончил читать ставь курсор обратно. А вообще лучше кидай код, мы посмотрим...
Номер ответа: 2
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #2
Добавлено: 12.08.05 20:28
О! Как раз по теме
Как изменить указатель на руку (которая установлена в системе, например, при наводке на линки в Internet Explorer)?
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 13.08.05 17:01
MousePointer = Custom
В MouseIcon выбери *.ico с рукой
Номер ответа: 4
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #4
Добавлено: 14.08.05 18:23
2 HACKER: ага, щщщас! Я уже побежал выбирать ico с рукой! Я же писал:
Номер ответа: 5
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #5
Добавлено: 14.08.05 18:42
Private Declare Function LoadImage Lib "user32.dll" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As Long, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
Private Declare Function OleCreatePictureIndirect Lib "oleaut32" (ByRef lpPictDesc As PicBmp, riid As GUID, ByVal fOwn As Long, ByRef lplpvObj As Any) As Long
Private Type GUID
 ata1 As Long
 ata2 As Integer
 ata3 As Integer
 ata4(0 To 7) As Byte
End Type
Private Type PicBmp
Size As Long
Type As PictureTypeConstants
hBmp As Long
hPal As Long
Reserved As Long
End Type
Private Const IMAGE_CURSOR As Long = 2
Private Const OCR_HAND As Long = 32649
Private Const LR_DEFAULTSIZE As Long = &H40
Private Const LR_SHARED As Long = &H8000
Private Sub Form_Load()
Me.MousePointer = vbCustom
Set Me.MouseIcon = GetPictureFromHandle(LoadImage(0, OCR_HAND, IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE Or LR_SHARED), vbPicTypeIcon)
End Sub
Public Function GetPictureFromHandle(ByVal Handle As Long, ByVal PictureType As PictureTypeConstants) As IPictureDisp
Dim p As PicBmp, g As GUID
With p
.hBmp = Handle
.Size = Len(p)
.Type = PictureType
End With
'IDispatch
With g
.Data1 = &H20400
.Data4(0) = &HC0
.Data4(7) = &H46
End With
OleCreatePictureIndirect p, g, 0, GetPictureFromHandle
End Function
Примечание.
fOwn = 0 только потому, что используется LR_SHARED. Вообще там 1 обычно.
Номер ответа: 6
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #6
Добавлено: 15.08.05 20:00
2 GSerg: почти то! Жаль, тень от курсора не отбрасывается, ведь в данном случае курсор - не курсор, а картинка
Большое спасибо!