SDL and Visual Studio 2010 resources
SDL and Visual Studio 2010 resources
我有一个简单的问题。我在 c++ 程序中使用 SDL 和 SDL_image,并且从单个 png 文件加载图像很好。
SDL_Surface *dot = NULL;
dot = load_image("dot.png");
但是,如果我将 png 文件添加到资源中,如何加载它? 所以我不想存储在 exe 旁边的 png 文件中。是否可以从资源加载?
试
dot = load_image(MAKEINTRESOURCE(IDB_PNG1));
但它没有用。
完全可以将图像或其他内容从 Windows 资源加载到 SDL 中。为此,您需要获取原始数据并将其传递给相应的 RWOPS。
HMODULE hModule = GetModuleHandle(_T("myapp.exe"));
HRSRC hWhite = FindResource(hModule, MAKEINTRESOURCE(IDB_WHITE_PNG), _T("PNG"));
unsigned int white_size = SizeofResource(hModule, hWhite);
HGLOBAL hgWhite = LoadResource(hModule, hWhite);
unsigned char* white_data = (unsigned char*)LockResource(hgWhite);
SDL_Surface* white = IMG_Load_RW(SDL_RWFromConstMem(white_data, white_size), 1);
这假设您的 *.rc 文件中有类似的东西:
IDB_WHITE_PNG PNG "White.png"
根据MAKEINTRESOURCE
文档:
返回值应仅传递给显式指示它们接受 MAKEINTRESOURCE 作为参数的函数。
您没有给出load_image
的内容(顺便说一句,请在问题中包含您使用的函数的内容,您会得到更好的答案......)但我敢打赌它没有使用其参数来调用接受MAKEINTRESOURCE
的 Windows SDK 函数之一......据我所知,这些资源应该保存一些特定的Windows UI数据,如鼠标光标,图标等。用于 Windows 函数,而不是与 SDL 等其他库一起使用,所以我并不惊讶它不起作用。
相关文章:
- 无法在 Visual Studio 2010 中构建 Allegro C++ 程序
- Visual Studio 2013,错误 MSB8020:找不到 Visual Studio 2010 的生成工具
- VisualC++ 2010 有没有办法找出有关未处理异常错误的更多详细信息
- 双线程应用比单线程应用慢 C++ (VC++ 2010 Express).如何解决?
- std::array initalization with Visual Studio 2010
- MSVC 2010 编译应用程序和 MSVC 2019 编译应用程序之间的行为差异
- 将代码从 32 位迁移到 64 位时出现问题 Visual Studio 2010
- 在 Visual Studio 2010(及更高版本)中定义包含或链接路径变量的位置
- Visual Studio 2010 单元测试:无法识别引用的项目类
- Visual Studio 2010 - C++ 致命错误 LNK1120: 1 个未解析的外部
- VisualStudio 2015 链接器查找 VS 2010 库
- C /FORTRAN项目由Visual Studio 2010/Intel 2013创建,将不会在Visual St
- 如何使 Visual Studio 2010 警告未使用的变量
- 如何解决错误 C2719 在 Visual Studio 2010 C++ 中不存在代码行时
- 代码 c++ VS 2010 中的 LPCWSTR 到字符串转换问题
- 按值传递的参数在 Visual Studio 2010, C++ 的调试器中显示为通过引用传递
- Visual Studio 2010 是否执行零初始化
- 从另一个CPP文件访问Form1的文本框,Visual C 2010
- 无法使用 Visual Studio 2010 和 Qt 版本 4.8.0 创建"Qt Gui Application"
- SDL and Visual Studio 2010 resources