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

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

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

我考虑过在复制之前的游标之前执行SetSystemCursor并在应用程序出口处重新设置它们,但即使我实现了终止处理程序,如果进程例如崩溃,也可能无法调用它。 只要应用程序正在运行,游标仍然会在系统范围内进行更改。

特别是对于resize-cursors,我可以放弃窗口样式,创建一个无边框窗口,并自己渲染/实现resize的夹点和逻辑(然后我可以挂钩鼠标hover事件),但这真的只是我的最后一次度假胜地 – 在做这个繁琐的任务之前,我想知道是否有可能实现我的目标……

对于任何感兴趣的人:UI使用WPF呈现,但WPF也不提供此function(同样,他们拥有它,但仅用于默认指针)。 如果必须的话,我不用担心使用WinAPI或其他“低级别”电话,但目前似乎没有一个能满足我的需求:(

因此,如果有人知道如何为我的应用程序更改WPF或WinAPI中的其他系统游标(不是默认指针)而不必为我的窗口实现自定义游标逻辑,那么你就可以度过我的一天。

我不知道如何在WPF中实现它,但是如果你想将游标设置为默认值之外的其他东西,那么你的窗口过程应该处理WM_SETCURSOR消息。

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