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

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

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

专门针对调整大小的光标,我可以放下窗口样式,制作无边界窗口,自己渲染/实现大小调整夹点和逻辑(然后我可以钩住鼠标悬停事件),但这实际上只是我的最后一个度假-我想知道在我完成这项繁琐的任务之前是否有可能实现自己的目标...

对于任何有兴趣的人:UI都是使用WPF呈现的,但是WPF也不提供此功能(同样,他们也有,只是默认指针)。对于我来说,不必使用WinAPI或其他“低级”调用,但目前看来,没有任何一种可以满足我的需求:(

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

最佳答案

我不知道如何在WPF中实现此功能,但是如果要将光标设置为默认值以外的其他值,则您的窗口过程应该处理WM_SETCURSOR消息。

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

关于c# - WinAPI/WPF:仅为应用程序设置系统光标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27771332/

10-09 06:43
查看更多