Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
29.03.2024, 18:52:49

Войти
На форуме добавлена возможность подписки на RSS-ленты любого раздела форума. Подписаться можно, нажав на иконку RSS , расположенную левее наименования раздела.
33 233 Сообщений в 5 454 Тем от 6 753 Пользователей
Последний пользователь: malanik777
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Принудительное изменение средствами VBA внешнего вида указателя курсора мыши
Страниц: [1]   Вниз
Печать
Автор Тема: Принудительное изменение средствами VBA внешнего вида указателя курсора мыши  (Прочитано 1782 раз)
0 Пользователей и 1 Гость смотрят эту тему.
KinBau
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 1


Просмотр профиля E-mail
« : 14.06.2021, 07:01:00 »

Здравствуйте!
64-bit операционная система с 64-bit версией офиса (хотя, особо пока без разницы, ибо прилагающая ниже ссылка на найденный пример также выдает безуспешный результат и в 32-bit системе).
Итак, есть подключенная надстройка, представляющая из себя отдельную вкладку на ленте и содержащая кнопку.
Хочется, чтобы при нажатии на эту кнопку внешний вид курсора менялся со стандартной левонаправленной вверх стрелки на, например, вид руки с вытянутым указательным пальцем.
Вполне стандартный курсор, который можно найти в каталоге "C:\WINDOWS\Cursors\aero_link_il.cur"
Найденный в интернете пример по ссылке: http://rusproject.narod.ru/winapi/l/loadcursorfromfile.html показал на необходимость применения функций API LoadCursorFromFileA и SetCursor.
Однако ни адаптация этих функций под операционную систему 64-bit, ни прямое применение кода примера в системе 32-bit к желаемому результату не привело.
Иные поиски в инете с моделированием различных вариантов запросов по данному вопросу также не пролили свет на решение проблемы.
Предварительный код получается таким:

Код для системы 64-bit:
Код: (vb)
Declare PtrSafe Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As LongPtr
Declare PtrSafe Function SetCursor Lib "user32" (ByVal hCursor As LongPtr) As LongPtr
 
Sub proba()
Dim hCursor As LongPtr
 
hCursor = LoadCursorFromFile("C:\WINDOWS\Cursors\aero_link_il.cur")
If hCursor = 0 Then End
SetCursor hCursor
End Sub


Код для системы 32-bit:
Код: (vb)
Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
Declare PtrSafe Function SetCursor Lib "user32" (ByVal hCursor As LongPtr) As Long
 
Sub proba()
Dim hCursor As Long
 
hCursor = LoadCursorFromFile("C:\WINDOWS\Cursors\aero_link_il.cur")
If hCursor = 0 Then End
SetCursor hCursor
End Sub


Кто-нибудь сможет подсказать, как добиться желаемого результата?
« Последнее редактирование: 14.06.2021, 07:24:30 от KinBau » Записан
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #1 : 14.06.2021, 11:45:14 »

Кросс на Планете
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru