C++ C+中的鼠标光标+;加载时不更改

C++ C+中的鼠标光标+;加载时不更改,c++,winapi,C++,Winapi,我试图改变我的C++文件中的光标图像。由于某种原因,当我执行程序时,它不起作用。我使用了LoadCursorFromFile和SetCursor方法,但显然有些地方出了问题。我已经包括了代码中有问题的部分。提前感谢您的帮助!谢谢你抽出时间 问题代码 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HCURSOR cursor = LoadC

我试图改变我的C++文件中的光标图像。由于某种原因,当我执行程序时,它不起作用。我使用了LoadCursorFromFile和SetCursor方法,但显然有些地方出了问题。我已经包括了代码中有问题的部分。提前感谢您的帮助!谢谢你抽出时间

问题代码

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{

    HCURSOR cursor = LoadCursorFromFile("mouse.cur");
    HCURSOR SetCursor(cursor);
    MSG msg;
    int counter = 1;
    int posx = 0;
    int posy = 0;
    int seriesinc = 0;
    int arrays;
    int xPos, yPos;

这是变量声明,不是函数调用:

HCURSOR SetCursor(cursor);
你想要的是

::SetCursor(cursor); // discard return value


这是变量声明,不是函数调用:

HCURSOR SetCursor(cursor);
你想要的是

::SetCursor(cursor); // discard return value


您的窗口将通过将光标设置为默认箭头来响应消息。您可能已经看到,在调用
SetCursor
之后,光标在返回之前只改变了一瞬间-这是调用和下一条
WM_SetCursor
消息之间的时间


您应该为
WM_SETCURSOR
消息创建一个处理程序,并在那里调用
SETCURSOR
,然后返回
TRUE

,您的窗口将通过将光标设置为默认箭头来响应消息。您可能已经看到,在调用
SetCursor
之后,光标在返回之前只改变了一瞬间-这是调用和下一条
WM_SetCursor
消息之间的时间


您应该为
WM_SETCURSOR
消息创建一个处理程序,并在那里调用
SETCURSOR
,然后从文档中返回
TRUE

,参考在窗口上的鼠标:“如果类光标不为NULL,则每次移动鼠标时系统都会恢复类光标。”然后可以使用
WM_SETCURSOR
(处理该消息)。再次查看文档。事实上,在
WinMain()
的开头使用
SetCursor()
尤其无效,因为该过程当时甚至没有任何窗口。我认为您需要阅读win32入门,因为您的代码错误多于正确!从文档中可以看出,鼠标悬停在窗口上:“如果类游标不为空,则每次移动鼠标时系统都会恢复类游标。”然后可以使用
WM_SETCURSOR
(处理该消息)。再次查看文档。实际上,在
WinMain()开头使用
SETCURSOR()
尤其无效,因为该过程当时甚至没有任何窗口。我认为您需要阅读win32入门,因为您的代码错误多于正确!感谢您的回答!我尝试用HCURSOR-SetCursor=:SetCursor(cursor)替换HCURSOR-SetCursor(cursor);line;但它也不起作用。出于好奇,什么是prevCursor以及这行代码如何帮助更改光标。如果您有任何其他想法,我很想听听,或者如果您知道这行代码不起作用的原因,我很想听听您的意见。再次感谢您的回答和您的时间!@user3288629您应该在
WndProc
方法如@Mark Ransom所说感谢您的回答!我尝试替换HCURSOR SetCursor(cursor);使用HCURSOR prevCursor=:SetCursor(cursor)替换行;但它也不起作用。出于好奇,什么是prevCursor以及这行代码如何帮助更改光标。如果您有任何其他想法,我很想听听,或者如果您知道这行代码不起作用的原因,我很想听听您的意见。再次感谢您的回答和您的时间!@user3288629您应该在
WndProc
方法正如@Mark Ransom所说,您也应该在inside
WinProc
@mr5中提到的那样,我假设您对如何响应Windows消息有了基本的了解。@mr5 Mark的回答是正确的。您关于限制消息应在何处处理的建议是错误的。不要求消息必须是han在您的
WndProc
中进行处理。如果您有特定的原因这样做,您也可以在消息循环或消息挂钩中进行处理。您还应该在
WinProc
@mr5中提到这一点。我假设您对如何响应Windows消息有基本的了解。@mr5 Mark的回答是正确的。您r限制消息处理位置的建议是错误的。不要求必须在
WndProc
内处理消息。如果您有特定的原因,也可以在消息循环内或消息挂钩内处理。