将自定义系统光标重置为正常

时间:2012-06-03 15:01:23

标签: c# .net windows visual-c++

我使用SetSystemCursor更改系统光标但是当我尝试使用DestroyCursor将系统光标重置为nornal时没有任何反应!!

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

如上所述,SetSystemCursor()函数已经破坏了传递的光标,因此再次销毁它不会产生任何影响。

您需要存储旧光标的副本,以便稍后恢复:

// Global Variables:
HCURSOR hOldCursor;
...
   hOldCursor = CopyCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));
   HCURSOR hNewCursor = CopyCursor(LoadCursor(hInstance, MAKEINTRESOURCE(IDC_MYCURSOR)));
   SetSystemCursor(hNewCursor, OCR_NORMAL);

并像这样恢复:

SetSystemCursor(hOldCursor, OCR_NORMAL);
DestroyCursor(hOldCursor);
hOldCursor = NULL;

请注意,在程序终止而不恢复光标时会导致相当大的痛苦。正如我经验测试此代码。更改系统游标非常不友好,因为它对桌面上运行的所有其他程序具有全局影响。

答案 1 :(得分:5)

或者,您可以将系统游标恢复为默认值,如下所示:

SystemParametersInfo(SPI_SETCURSORS, 0, NULL, 0);

其中SPI_SETCURSORS定义为0x0057,如here

所述