Анимированный курсор

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
kreator
✯ Ветеран ✯
Сообщения: 5159
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Анимированный курсор

Сообщение kreator »

А setcursor не поддерживает анимированные курсоры (с расширением .ani)? Или формат определённый нужен? Или как всё-таки показать свой анимированный курсор.
We are hard at work… for you. :)
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Анимированный курсор

Сообщение Admin »

Вот пример чей то.
Вложения
anicur.zip
(9.32 КБ) 87 скачиваний
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Анимированный курсор

Сообщение Admin »

При загруженном таким методом курсоре, мушка перестает работать.
Пока не выгрузим курсор. Так что костыль.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
kreator
✯ Ветеран ✯
Сообщения: 5159
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Анимированный курсор

Сообщение kreator »

Посмотрел пример - действительно дурость какая-то. Вообще я хотел стандартный подменить на время выполнения программы. Надо плотнее в Инете поискать, может современные способы какие есть.
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 5159
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Анимированный курсор

Сообщение kreator »

Дошли руки до темы. Есть Винапишная функция SetSystemCursor. С её помощью получается то, что надо:

Код: Выделить всё

GLO:CursorFile = '..\media\j.ani'
GLO:CursorHandle = LoadCursorFromFile(GLO:CursorFile)
if GLO:CursorHandle
  i# = SetSystemCursor(GLO:CursorHandle, OCR_WAIT)
else
  stop('Ошибка загрузки курсора')
end
Теперь везде при вызове "setcursor(CURSOR:Wait)" будет мой курсор.
При выходе из программы - не забыть вернуть курсор на место и выгрузить свой курсор. Я пока на первых порах решил так:

Код: Выделить всё

if GLO:CursorHandle
	GLO:CursorFile = clip(GLO:WinDir) & '\Cursors\aero_busy.ani'
	GLO:OldCursorHandle = LoadCursorFromFile(GLO:CursorFile)
  i# = SetSystemCursor(GLO:OldCursorHandle, OCR_WAIT)
  i# = DestroyCursor(GLO:CursorHandle)
end
Минус пока один. В других программах - тоже мой курсор :idied: . Надо ещё подумать. Может делать обратную подмену при потере фокуса, при получении фокуса опять включать свой?
We are hard at work… for you. :)
Ответить