WinAPI / WPF:仅为应用程序设置系统光标

本文关键字:应用程序 设置 系统 光标 WPF WinAPI | 更新日期: 2023-09-27 18:36:23

我有一个应用程序,其UI是使用主题自定义呈现的。我还想添加新的非默认光标(例如当用户打算调整窗口大小时调整大小光标)以匹配该主题。

使用 WinAPI 函数SetCursor我只能更改应用程序的默认指针,但这还不够,所以我查找了SetSystemCursor它工作得很好。问题是:后一个版本在系统范围内永久更改游标,但我只希望仅针对我的应用程序更改它们。

我想过在执行SetSystemCursor之前复制以前的游标并在应用程序退出时重新设置它们,但即使我实现了终止处理程序,如果进程(例如只是崩溃),也可能不会被调用。此外,只要应用程序正在运行,游标仍将在系统范围内更改。

特别是对于调整大小光标,我可以删除窗口样式,制作一个无边框窗口,然后自己渲染/实现调整大小的手柄和逻辑(然后我可以钩住鼠标悬停事件),但这真的只是我最后的手段 - 我宁愿想知道是否有可能在我做这个繁琐的任务之前实现我的目标......

对于任何感兴趣的人:UI 使用 WPF 呈现,但 WPF 也不提供此功能(同样,他们有它,但仅用于默认指针)。如果有必要,我不需要使用 WinAPI 或其他"低级"调用,但目前似乎没有一个适合我的需求:(

因此,如果有人知道如何仅为我的应用程序更改 WPF 或 WinAPI 中的其他系统游标(不是默认指针),而不必为此为我的窗口实现自定义游标逻辑,那么您会让我开心。

WinAPI / WPF:仅为应用程序设置系统光标

我不知道

如何在 WPF 中实现这一点,但如果您想将光标设置为默认值以外的其他内容,那么您的窗口过程应该处理WM_SETCURSOR消息。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms648382(v=vs.85).aspx