I'm trying to change the cursor of my mouse with a .cur file in a resource file.
When I'm try my code, I get this error:
Exception raised at 0x77EB7392 (ntdll.dll) in CleanResourceFiles.exe: 0xC0000005: Access Violation while reading location 0x00000066.
Here is the code:
HCURSOR curs = (HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(IDC_CURSOR1), 2, 0, 0, LR_LOADFROMFILE); SetSystemCursor(curs, 32512);
IDC_CURSOR1 is my cursor and
32512 is the ID of the classic arrow cursor. I also included
<Windows.h> and my
I'm using Visual Studio Community 2017, with Win10.
I tried other functions, like
LoadCursor(). The code above is from "VineMemz".
Finally, when I tried to change my cursor with
LoadFromFile() using the path to my
.cur file, it works.
LoadImage(), you are specifying the
LR_LOADFROMFILE flag, so the
lpszName parameter will be interpreted as a pointer to a null-terminated string containing the path to the
.cur file to load. But, you are passing in a resource ID number instead of a file path string (I'm assuming
IDC_CURSOR1 is 102 (0x66), which would be consistent with the memory address reported in the error message). You need to get rid of the
LR_LOADFROMFILE flag when loading an image from resources.
Also, you need to pass in the EXE's actual module handle in the
hinst parameter, not NULL (NULL can only be used with loading OEM-defined images).
Also. you should not be using "magic numbers". The
LoadImage() should be replaced with the
IMAGE_CURSOR constant, and the
SetSystemCursor() should be replaced with the
HCURSOR curs = (HCURSOR) LoadImage(GetModuleHandle(), MAKEINTRESOURCE(IDC_CURSOR1), IMAGE_CURSOR, 0, 0, 0); SetSystemCursor(curs, OCR_NORMAL);
User contributions licensed under CC BY-SA 3.0