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

时间:2015-01-04 23:03:42

标签: c# c++ wpf winapi cursor

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

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

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

特别是对于resize-cursors,我可以放弃窗口样式,创建一个无边框窗口,并自己渲染/实现调整大小的夹点和逻辑(然后我可以挂钩鼠标悬停事件),但这确实是只是我的最后一招 - 在我做这个繁琐的任务之前,我想知道是否有可能实现我的目标......

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

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

1 个答案:

答案 0 :(得分:1)

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

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