C++;:正确使用LoadImage和SetCursor函数 我试图编写一个快速简单的C++程序,它将光标图标从目录中更改为自定义图像。Windows开发中心似乎有,我从中得出以下代码: #include <iostream> #include <chrono> #include <thread> #include <Windows.h> using namespace std; int main(int argc, char** argv) { //HINSTANCE hInst = GetModuleHandle(NULL); HINSTANCE hInst = NULL; HCURSOR cursor = (HCURSOR)LoadImage(hInst, "Image.bmp", IMAGE_BITMAP, 32, 32, LR_LOADFROMFILE); //Also tried LR_SHARED cout << "Initializing\n"; Sleep(1500); SetCursor(cursor); //Also tried SetSystemCursor(cursor, 32512); cout << "Setting cursor\n"; Sleep(1500); DestroyCursor(cursor); cout << "Restoring cursor\n"; Sleep(2000); return 0; } #包括 #包括 #包括 #包括 使用名称空间std; int main(int argc,字符**argv) { //HINSTANCE hInst=GetModuleHandle(NULL); HINSTANCE hInst=NULL; HCURSOR cursor=(HCURSOR)LoadImage(hInst,“Image.bmp”,Image\u位图, 32,32,LR_LOADFROMFILE);//也尝试了LR_共享 我不认为你可以在控制台窗口上更改光标。如果你弹出一个对话框,我认为光标会更改。我从未在Windows的控制台窗口上看到光标更改。

C++;:正确使用LoadImage和SetCursor函数 我试图编写一个快速简单的C++程序,它将光标图标从目录中更改为自定义图像。Windows开发中心似乎有,我从中得出以下代码: #include <iostream> #include <chrono> #include <thread> #include <Windows.h> using namespace std; int main(int argc, char** argv) { //HINSTANCE hInst = GetModuleHandle(NULL); HINSTANCE hInst = NULL; HCURSOR cursor = (HCURSOR)LoadImage(hInst, "Image.bmp", IMAGE_BITMAP, 32, 32, LR_LOADFROMFILE); //Also tried LR_SHARED cout << "Initializing\n"; Sleep(1500); SetCursor(cursor); //Also tried SetSystemCursor(cursor, 32512); cout << "Setting cursor\n"; Sleep(1500); DestroyCursor(cursor); cout << "Restoring cursor\n"; Sleep(2000); return 0; } #包括 #包括 #包括 #包括 使用名称空间std; int main(int argc,字符**argv) { //HINSTANCE hInst=GetModuleHandle(NULL); HINSTANCE hInst=NULL; HCURSOR cursor=(HCURSOR)LoadImage(hInst,“Image.bmp”,Image\u位图, 32,32,LR_LOADFROMFILE);//也尝试了LR_共享 我不认为你可以在控制台窗口上更改光标。如果你弹出一个对话框,我认为光标会更改。我从未在Windows的控制台窗口上看到光标更改。,c++,winapi,C++,Winapi,我认为你不能在控制台窗口上更改光标。如果你弹出一个对话框,我认为光标会更改。我从未见过r在Windows中的控制台窗口上看到光标更改。您的代码似乎有一些问题。您正在尝试加载.bmp,但是 文件中的数据必须为.CUR或.ANI格式 虽然这对于LoadImage可能不是严格意义上的,因为我已经能够将.ico加载到光标中,但我认为您无法加载.bmp 试试像这样的东西 const HCURSOR customCursor = static_cast<HCURSOR>(LoadImage(nu

我认为你不能在控制台窗口上更改光标。如果你弹出一个对话框,我认为光标会更改。我从未见过r在Windows中的控制台窗口上看到光标更改。

您的代码似乎有一些问题。您正在尝试加载
.bmp
,但是

文件中的数据必须为.CUR或.ANI格式

虽然这对于
LoadImage
可能不是严格意义上的,因为我已经能够将
.ico
加载到光标中,但我认为您无法加载
.bmp

试试像这样的东西

const HCURSOR customCursor = static_cast<HCURSOR>(LoadImage(nullptr, L"Cursor.cur", IMAGE_CURSOR, 0, 0, LR_LOADFROMFILE));

您的代码似乎有一些问题。您正在尝试加载
.bmp
,但是

文件中的数据必须为.CUR或.ANI格式

虽然这对于
LoadImage
可能不是严格意义上的,因为我已经能够将
.ico
加载到光标中,但我认为您无法加载
.bmp

试试像这样的东西

const HCURSOR customCursor = static_cast<HCURSOR>(LoadImage(nullptr, L"Cursor.cur", IMAGE_CURSOR, 0, 0, LR_LOADFROMFILE));

它比这要复杂得多。上的MSDN页面应该为您指出正确的方向。
LoadImage
需要一个*.cur文件,而不是位图。您可以在Visual Studio的资源编辑器中创建一个*.cur文件。这里有一个控制台程序。
WM_SETCURSOR
WNDCLASS/LoadCursor
在具有WinMain的windows程序中使用入口点。光标通常仅限于窗口。
SetSystemCursor
将更改整个桌面的光标,但这不是一个好选项,因为用户应该从控制面板执行。您可以在窗口程序或Java程序中尝试
SetCapture
/
ReleaseCapture
,如果它有类似的功能ar.还有拖放选项……我的问题是:您想在自己的窗口外更改光标的原因是什么?是为了拖放还是为了其他目的?解决方案可能不同。至于您的最后一段,Windows的UI使用消息传递设计。
WM\ucode>有些东西是窗口消息。请参阅f或者是关于消息及其用途的概述。@b我的目的不是为了拖放,而是为了让光标在指定的时间间隔内自动更改。无论如何,感谢您提供的信息,我会看看我是否有进展。这比这要复杂得多。上的MSDN页面应该为您指出正确的方向。
LoadImage
需要一个*.cur文件,而不是位图。您可以在Visual Studio的资源编辑器中创建一个*.cur文件。这里有一个控制台程序。
WM_SETCURSOR
WNDCLASS/LoadCursor
在具有WinMain入口点的windows程序中使用。光标通常限制在窗口内。
SetSystemCursor
将更改光标指向整个桌面,但这不是一个好的选择,因为用户应该从控制面板执行。您可以尝试在窗口程序或Java程序中使用
SetCapture
/
ReleaseCapture
,如果它有类似的功能。还有拖放选项……我的问题是:您想更改的原因是什么将光标移到您自己的窗口外?它是用于拖放还是用于其他用途?解决方案可能不同。对于您的最后一段,Windows的UI使用消息传递设计。
WM\uuuu\code>有些东西是窗口消息。有关消息及其用途的概述,请参阅。@b我的目的不是用于拖放。@b我不希望光标在指定的时间间隔内自动改变。无论如何,谢谢你提供的信息,我会看看我是否有进展。