VBA вызывает изменение курсора user32.dll - PullRequest
0 голосов
/ 30 декабря 2011

Краткий вопрос
Можно ли изменить системный курсор для выбранного приложения (Visio 2010), используя user32.dll?

Фон
Я пытаюсь заставить курсор отображаться только в виде стрелки, или, что еще лучше, переназначить указатель «песочных часов» на указатель стрелки, чтобы, когда мое приложение Visio «ждет», оно всегда показывало стрелку.До сих пор я был в состоянии загрузить user32.dll и вызвать SetSystemCursor, LoadCursorA и ShowCursor.Из всех сделанных звонков только ShowCursor работает как положено.

Проблема вполне может состоять в том, что я не до конца понимаю, что на самом деле делают LoadCursor и SetSystemCursor.Я связал лучшую документацию, которую смог найти, которой в лучшем случае не хватает IMO.

Заключительные мысли
Есть ли лучший способ сделать это, чем использовать user32.dllAPI?Обратите внимание, что Visio 2010, как я могу найти, вообще не контролирует указатели мыши.

Follow Up
Проверьте этот пост для точного поведения, которое я пытаюсь обойти.Обратите внимание, что я не пытаюсь скрыть приложение от показа, что оно занято.Я пытаюсь избавиться от мерцания песочных часов при каждом программном изменении данных формы Visio. Здесь - это ссылка на пример Visio, который я упоминаю в сообщении VisioGuy, вы должны быть участником сайта для просмотра вложений.

Изначально я не собирался использовать LoadCursor с SetSystemCursor, я связал их только из-за документации, найденной на Pinvoke.net (для SetSystemCursor).Я не видел документацию MSDN для SetSystemCursor.Спасибо за совет по Pinvoke ... и я не знаю, почему я не поднял MSDN для них обоих.

По общему признанию, я не играл много с системными DLL.Моя основная база знаний посвящена встроенным системам и независимым от ОС языкам (например, Python), поэтому совет о SetSystemCursor, вызывающем глобальные системные ошибки, является той информацией, которая мне действительно нужна.

1 Ответ

0 голосов
/ 16 января 2012

Несмотря на то, что он не дает точного ответа на вопрос «изменение курсора», я думаю, вы должны иметь возможность использовать свойства объекта приложения Visio:

По крайней мере, это позволит вам скрыть курсор во время фоновой обработки.Я проверил это с вашим образцом на visguy, и он больше не показывает безболезненную смену курсора.

...