Что на самом деле делает функция «Скрыть указатель во время набора»?

18

Мне любопытно, что эта функция была частью Windows столько, сколько я себя помню. Может быть, даже Windows 95 или 98.

введите описание изображения здесь

Для меня это означает именно то, что он говорит. Курсор мыши должен стать невидимым, когда я печатаю. OS / X имеет эту функцию, и она на самом деле работает. Однако из того, что я могу сказать, либо:

  • Это полностью сломано на Windows и было навсегда.
  • Это зависит от приложения, чтобы реализовать эту функцию, или вызвать некоторые API или хук ОС, чтобы реализовать ее должным образом.

Итак, вот что я нашел:

  • Блокнот, насколько я помню, работает и уважает эту настройку. Я не могу проверить прямо сейчас, потому что у меня есть Notepad2, который заменяет Notepad. Notepad2 вовсе не уважает эту установку.
  • Visual Studio нет.
  • IE нет.
  • Microsoft Word делает, но на самом деле он скрывает курсор мыши независимо от того, включен этот параметр или нет. Возможно, команда Office реализовала эту функцию внутри компании.
  • Некоторые SKU Windows ведут себя по-разному. Например, у меня есть один друг, который говорит, что эта функция работает для IE, но он на поверхности.

Кто-нибудь нашел приложение, которое на самом деле будет скрывать курсор мыши, если и только если этот параметр включен? Если такого приложения не существует, этот флажок действительно что-нибудь делает? С точки зрения Windows API, какие ловушки ОС предоставляются разработчикам, чтобы использовать эту функцию?

Майк Кристенсен
источник
На моей машине с Win7 он работает в Notepad и Word 2010. Он не работает в Chrome и Notepad ++. Я действительно хочу, чтобы это работало в этих программах.
Гас
1
@gus - Ты хочешь сказать, что эти приложения уважают настройки? Или эти приложения скрывают курсор мыши во время набора независимо от настроек?
Майк Кристенсен
2
Первоначально я думал, что Блокнот и Word2010 соблюдают настройку Скрыть в настройках указателя. После прочтения ваших комментариев я проверил поведение с отключенным параметром Скрыть и подтвердил, что Notepad и Word2010 скрывают указатель мыши во время ввода значения REGARDLESS параметра Скрыть в параметрах указателя. Таким образом, эта функция Windows, кажется, полностью нарушена или даже не закодирована в основных программах MS.
Гас
1
@ GUS - И с тех пор ... как ... 90-х годов. Это весело. Они должны хотя бы просто удалить функцию, если она никогда не была реализована. Это все еще там в Windows 10 даже!
Майк Кристенсен
Возможно, приложения больше не уважают его, но он все еще существует в унаследованных целях, на тот случай, если что-то произойдет .
Борт

Ответы:

12

Функция « Скрыть указатель при вводе» не позволяет скрыть указатель. Все, что он делает, это устанавливает значение системного параметра Mouse Vanish . Это значение может быть запрошено с помощью функции API-интерфейса WIN32 SystemParametersInfo (), передающей константу SPI_GETMOUSEVANISH.

Приложения должны запрашивать этот параметр и, если для параметра установлено значение TRUE, скрывать указатель мыши во время набора текста.

Некоторые приложения поддерживают этот параметр, например редактор в Eclipse IDE.

Большинство приложений игнорируют это полностью. Текстовый редактор, используемый сайтами Stack Exchange, не скрывает курсор при наборе текста.

По иронии судьбы довольно много приложений Microsoft игнорируют настройки и в любом случае скрывают курсор. Например Word 2010 и Блокнот в Windows 10.

bradfordrg
источник
Таким образом, ОС представляет собой хранилище данных, в котором хранится нужное значение для опции, но ОС не запускает функциональность проверки. Не удивительно, что это не воспринимается как широко поддерживаемая. Вздох. Интересно, поддерживают ли это другие части Microsoft Windows, например, при сохранении файла или при вводе пути в верхней части окна.
ТООГАМ
1
Вау, спасибо за техническую информацию! Я зашел так далеко, что спросил настоящих разработчиков из команды Windows в Microsoft, и никто из них не знал ответа! У меня даже был один файл с ошибкой в ​​Windows 10, но он был решен как «Не исправлять», потому что он работал так же в Windows 8. Я думаю, что они должны удалить параметр или заставить его работать как OS / X (где он прячется независимо от применения).
Майк Кристенсен