为什么在记事本窗口内打字时鼠标光标消失,但在浏览器或 cmd 中没有?哪些 Win API 函数显示它以及如何显示?

问题描述

为什么在 notepad.exewordpad.exerun.exe 窗口内输入时鼠标光标消失?哪个功能/中断/等负责?例如,输入网络浏览器或 cmd.exe 不会导致光标消失。机器代码中的哪些 Win API 函数显示鼠标指针以及如何(包括软件和硬件)以及这种消失是如何低级执行的?

解决方法

在用户打字时隐藏鼠标指针可以由应用程序自愿实现。很少有应用程序这样做。

通常,您会通过处理 Win32 API 通知来实现它:

  • 隐藏 WM_KEYDOWN 上的指针
  • WM_MOUSEMOVE 和许多其他事件(例如菜单和窗口相关事件)上显示指针。

此外,如果在鼠标指针选项(见下文)中选中键入时隐藏指针,应用程序应该只隐藏鼠标指针。

可以使用传递SPI_GETMOUSEVANISH(又名鼠标消失功能)的SystemParametersInfo() WIN32 API 函数查询此选项。

Mouse Pointer Options