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

Posted

技术标签:

【中文标题】为啥在记事本窗口中输入时鼠标光标会消失,但在浏览器或 cmd 中没有?哪些 Win API 函数显示它以及如何显示它?【英文标题】:Why does the mouse cursor disappear when typing inside a notepad window, but not in a browser or cmd? Which Win API functions display it and how?为什么在记事本窗口中输入时鼠标光标会消失,但在浏览器或 cmd 中没有?哪些 Win API 函数显示它以及如何显示它? 【发布时间】:2021-04-29 09:31:45 【问题描述】:

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

【问题讨论】:

我不明白这与 Windows Sysinternals 有什么关系。请解释或从标题、文字和标签中删除。 见这里:superuser.com/questions/928839/… 【参考方案1】:

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

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

隐藏WM_KEYDOWN上的指针 在WM_MOUSEMOVE 上显示指针以及许多更多事件,例如菜单和窗口相关事件。

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

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

【讨论】:

这个操作是如何低级执行的,包括机器码和硬件? 要显示或隐藏鼠标指针,请致电ShowCurser。这是对动态链接的User32.dll 的函数调用。其余的我不熟悉。很可能留给显卡(分体或集成),如何显示指针。

以上是关于为啥在记事本窗口中输入时鼠标光标会消失,但在浏览器或 cmd 中没有?哪些 Win API 函数显示它以及如何显示它?的主要内容,如果未能解决你的问题,请参考以下文章

为啥微信编辑时鼠标选中一个字,而且打字时会自动删除后面的字?

苹果笔记本丢失鼠标指针

为啥将文本添加到 RichEdit 窗口会冻结它?

为啥某些 Flask 会话值在关闭浏览器窗口后会从会话中消失,但稍后会在没有我添加它们的情况下重新出现?

如果在加载场景时移动鼠标光标不会消失 - OpenGL 和 GLFW

C# CefSharp封装的浏览器触摸获得焦点,有光标。无法输入中文。鼠标点击后正常。求解答谢谢!