c++ dll工程中 findresource为空 如何在c++ dll 工程中正确添加和使用png位图资源
时间: 2024-03-13 21:47:41 浏览: 18
在 C++ DLL 工程中,使用资源文件有一些特殊的注意事项。下面是添加和使用 PNG 位图资源的步骤:
1. 在 DLL 工程中添加资源文件(.rc)。在资源视图中右键单击 "Resource Files",选择 "Add Resource",然后选择 "PNG" 文件类型,将 PNG 文件添加到资源文件中。
2. 在 DLL 工程的头文件中包含 "windows.h" 和 "resource.h"。
3. 在 DLL 工程中使用 FindResource 函数来查找 PNG 资源。例如,如果 PNG 资源的 ID 是 IDR_MY_PNG,则可以使用以下代码:
```
HMODULE hModule = GetModuleHandle(NULL);
HRSRC hRes = FindResource(hModule, MAKEINTRESOURCE(IDR_MY_PNG), RT_RCDATA);
```
4. 使用 LoadResource 和 LockResource 函数来加载和锁定 PNG 资源。例如,可以使用以下代码:
```
HGLOBAL hGlobal = LoadResource(hModule, hRes);
LPVOID lpRes = LockResource(hGlobal);
```
5. 将 PNG 资源转换为位图。可以使用 GDI+ 或第三方库(如 libpng)来实现。以下是使用 GDI+ 的示例代码:
```
IStream* pStream = SHCreateMemStream((BYTE*)lpRes, SizeofResource(hModule, hRes));
Bitmap* pBitmap = Bitmap::FromStream(pStream);
```
6. 最后,记得在使用完 PNG 资源后释放资源。例如,可以使用以下代码:
```
DeleteObject(pBitmap);
FreeResource(hGlobal);
```
希望这些步骤能够帮