我通过以下方式设置自己的光标:

HCURSOR hCurStandard =  LoadCursorFromFile(TEXT("cursor.cur"));
SetSystemCursor(hCurStandard, 32512);
DestroyCursor(hCurStandard);


如何返回并设置默认光标?

这不起作用:

SetSystemCursor(LoadCursor(0, IDC_ARROW), 32512);


- - 编辑 - - -

HCURSOR hcursor = LoadCursor(0, IDC_ARROW);
HCURSOR hcursor_copy = CopyCursor(hcursor);
BOOL ret = SetSystemCursor(hcursor_copy, OCR_NORMAL);
DestroyCursor(hcursor);


这适用于除IDC_ARROW以外的所有游标,...是什么?

最佳答案

问题是您可能使用SetSystemCursor函数来更改标准箭头光标。该函数实际上使用您提供的HCURSOR覆盖了系统游标,因此,当您使用IDC_ARROW调用LoadCursor时,它将加载您的自定义游标。这就解释了程序的怪异行为。为避免这种情况,应在更改默认系统光标之前保存它。

HCURSOR def_arrow_cur = CopyCursor(LoadCursor(0, IDC_ARROW));
//now you have a copy of the original cursor
SetSystemCursor(LoadCursorFromFile("my_awesome_cursor.cur"),OCR_NORMAL);
...
SetSystemCursor(def_arrow_cur,OCR_NORMAL);//restore the good old arrow


我知道这是一个很晚的答案,但是我希望有人会觉得这个有用。

关于c++ - WinAPI SetSystemCursor和LoadCursorFrom-如何设置默认光标?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27112845/

10-16 14:57