Страница: 1 | 2 |
Вопрос: Цветной курсор в программах
Добавлено: 23.01.05 12:36
Автор вопроса: Black Dragon | Web-сайт:
Как вставить в свою прогу цветной курсор? И как получить текущий курсор, появляющийся, н-р, на ссылках в IE (тот, который обычно в виде руки)?
Ответы
Всего ответов: 17
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 23.01.05 15:04
2) Restorator
Номер ответа: 2
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #2
Добавлено: 23.01.05 15:21
1. Возьми любой курсор и раскрась его например в AWicons
2. GetCursor если надо заполучить хэндл курсора, или смотри в папке Windows\Cursors или AWicons
Номер ответа: 3
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #3
Добавлено: 23.01.05 16:43
Дык когда вставляешь курсор в прогу (хоть 256 цветов) в самой проге он, почему-то, черно-белый!!!!!!
Обижаешь, cresta, я не настолько дурак, чтобы пихать черно-белый курсор и спрашивать, почему он не цветной %(
Номер ответа: 4
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #4
Добавлено: 23.01.05 16:44
А можно в прогу запихнуть анимированный курсор?
Номер ответа: 5
Автор ответа:
Alex(S)
Вопросов: 8
Ответов: 31
Web-сайт:
Профиль | | #5
Добавлено: 23.01.05 17:22
Можно, с помощью функции LoadCursorFromFile.
Номер ответа: 6
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #6
Добавлено: 23.01.05 17:43
Иконки цветными грузятся, конечно нужно найти подходящую.
Номер ответа: 7
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #7
Добавлено: 23.01.05 19:22
2Mihalыch: насчет иконок я знаю, но их использование неудобно - "горячая точка" находится всегда в 16x16...
2Alex(S): как-нибудь можно загрузить анимированный курсор не из памяти, а из ресурсов (не сохраняя ничего на диск)?
Номер ответа: 8
Автор ответа:
Alex(S)
Вопросов: 8
Ответов: 31
Web-сайт:
Профиль | | #8
Добавлено: 23.01.05 19:55
А ничего на диск сохранять и не надо, просто грузишь нужный курсор из определенного места. Вот и все.
А что ты понимаешь под ресурсами?
Номер ответа: 9
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #9
Добавлено: 23.01.05 22:11
Имеются в виду ресурсы программы (файл RES)!
Alex(S), ты меня не понял. Я хочу в прогу вставить свой ANI-курсор. Вероятнее всего, на компе User'а его не будет. Вот я и спрашиваю, можно ли обойтись без сохранения курсора на диск?
Номер ответа: 10
Автор ответа:
Alex(S)
Вопросов: 8
Ответов: 31
Web-сайт:
Профиль | | #10
Добавлено: 23.01.05 22:51
Нет, нельзя. Так как в файл ресурсов невозможно добавить файл типа ani.
Номер ответа: 11
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #11
Добавлено: 24.01.05 00:23
В файл ресурсов можно добавить любой файл, если использовать для этого нормальнын редакторы ресурсов
Номер ответа: 12
Автор ответа:
Alex(S)
Вопросов: 8
Ответов: 31
Web-сайт:
Профиль | | #12
Добавлено: 24.01.05 00:33
Запихать то можно, но вот использовать из него, я лично не знаю как, да и с ходу не получилось. Мой совет не заморачивайся, используй функцию LoadCursorFromFile. А чтобы на комп юзера скопировать курсор можно его включить в программу установки твоей проги.
Номер ответа: 13
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #13
Добавлено: 24.01.05 00:58
Использовать через API
Номер ответа: 14
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #14
Добавлено: 24.01.05 01:10
Dim ct As Control, barr() As Byte, i As Long, cpos As POINTAPI, fN As Integer
barr = LoadResData(cursorName, "CUSTOM"
fN = FreeFile
Open appPath + "Temp\temp.ani" For Binary As #fN
For i = 0 To UBound(barr)
Put #fN, , barr(i)
Next i
Close #fN
On Error Resume Next
mhAniCursor = LoadCursorFromFile(appPath + "Temp\temp.ani"
lResult = SetClassLong(targetForm.hwnd, GCL_HCURSOR, mhAniCursor)
For Each ct In targetForm.Controls
mhAniCursor = LoadCursorFromFile(appPath + "Temp\temp.ani"
lResult = SetClassLong(ct.hwnd, GCL_HCURSOR, mhAniCursor)
Next ct
On Error GoTo 0
DoEvents
Call GetCursorPos(cpos)
Call SetCursorPos(cpos.x + 1, cpos.y + 1)
targetForm.Refresh
End Sub
Public Sub RestoreCursor(ByVal targetForm As Form)
Dim ct As Control, cpos As POINTAPI, iBeamCursor As Long
On Error Resume Next
lResult = SetClassLong(targetForm.hwnd, GCL_HCURSOR, mhBaseCursor)
iBeamCursor = LoadCursor(0&, IDC_IBEAM)
For Each ct In targetForm.Controls
If TypeOf ct Is TextBox Then
lResult = SetClassLong(ct.hwnd, GCL_HCURSOR, iBeamCursor)
Else
lResult = SetClassLong(ct.hwnd, GCL_HCURSOR, mhBaseCursor)
End If
Next ct
lResult = DestroyCursor(mhAniCursor)
DoEvents
Call GetCursorPos(cpos)
Call SetCursorPos(cpos.x + 1, cpos.y + 1)
targetForm.Refresh
Kill appPath + "Temp\temp.ani"
On Error GoTo 0
End Sub
В редакторе ресурсов создай ресурс "CUSTOM", в котором будет анимированный курсор.
Номер ответа: 15
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #15
Добавлено: 24.01.05 01:13
Хе... выдрано из проекта трёхлетней давности... запись в файл сделана, прямо скажем, корявенько )
Что не объявлено в самих процедурах - то глобальное.
"Call SetCursorPos(cpos.x + 1, cpos.y + 1)": таким образом я пытался "обновить" курсор... но, по-моему, так и не получилось...