【发布时间】:2018-04-24 05:52:11
【问题描述】:
我正在使用 VisualStudio2017 开发适用于 Windows 7 的应用程序。此应用程序希望有从 DLL 加载的特殊游标。所以首先我创建了一个 DLL 并添加了以下 .rc 文件:
BM_CURSOR_GRAB CURSOR "./grab.cur"
BM_CURSOR_GRABBING CURSOR "./grabbing.cur"
BM_CURSOR_GRAB 和 BM_CURSOR_GRABBING 在头文件中定义为:
#define BM_CURSOR_GRAB 100
#define BM_CURSOR_GRABBING 101
我编译了 DLL - 可以使用并使用 ResourceEditor.exe 检查它我的资源包括在内:
现在“非工作”部分开始了。我的应用程序想要加载光标,但 FindResource 没有找到它。这是我的代码:
HMODULE dll = LoadLibrary("BenjaMiniRessources.dll");
HRSRC hRes = FindResource(dll, MAKEINTRESOURCE(100), RT_CURSOR);
DWORD dwSize = SizeofResource(dll,hRes);
HGLOBAL hMem = LoadResource(dll, hRes);
LPBYTE pBytes = (LPBYTE)LockResource(hMem);
Cursor = CreateIconFromResource(pBytes, dwSize, false, 0x00030000);
我做错了什么?
【问题讨论】:
-
“我做错了什么?” - 不检查失败,不调用
GetLastError()。 -
您是否尝试过枚举资源。 RT_CURSOR 资源不直接包含在资源部分中,iirc,它们通常作为子资源包含在 RT_GROUP_CURSOR 中。