windows - LoadImage 在 8 位图像中失败

标签 windows winapi gdi

当我加载 8 位 BMP 文件时,此代码有问题。

HBITMAP hbm = LoadImageW(NULL, L"C:\\Test.bmp", IMAGE_BITMAP, 0, 0,LR_LOADFROMFILE);

但是HBITMAP为0,GetLastError也返回0。

问题出在哪里?

我在 stackoverflow 上看到类似的问题,但此代码仅在 8 位位图中失败。

MSDN 对这种行为只字不提。

感谢您的回答或任何建议。

编辑:与资源加载相同的位图工作正常

操作系统:Windows XP SP2

编辑 2:我昨天测试使用 Photoshop 打开此图像 - 很好,MSPAINT - 很好,Microsoft Agent 字符编辑器 - 失败,我的应用程序 - 失败!今天测试 - 现在可以了!!! 10 分钟前再次测试 - 不起作用。可能是某种锁?我发现类似的问题:http://social.msdn.microsoft.com/Forums/pl-PL/vcmfcatl/thread/df4aa858-6d59-402d-8d96-6414774fed31

最佳答案

好的。我找到了导致问题的原因。

问题是 BITMAPINFOHEADERbiSizeImage 成员设置不正确。

但是经过一个不眠之夜,当我测试两个图像(80x80,128x128)时,我发现了有趣的事情。

LoadImage 仍然成功加载 biSizeImage 不正确的图像,从 0实际大小 + 1052。例如,对于 80x80 图像,biSizeImage 必须为 6400,但 LoadImage 会加载 biSizeImage 设置为 0 或 1、6401 或 6402 的图像。 ..但设置7453后失败。

仍然存在问题,为什么LoadImage成功从具有任何biSizeImage值的资源加载图像。

关于windows - LoadImage 在 8 位图像中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11342279/

相关文章:

windows - 简单的多线程互斥示例是不正确的

c++ - C/C++ header 、dll 和导出

c - C 和 Windows GDI 中的双缓冲*框架*

c - 绘画代码在我的 WM_COMMAND 消息处理程序中无法正常工作

c++ - 如何使用 C++/WinAPI 绘制具有透明背景的文本?

windows - 在 Windows 命令行上运行 raco

.net - 如何在Windows中异步打开一个文件

java - Windows 8 扭曲了我的托盘图标

c++ - 没有 lodctr 的 c++ 中的性能计数器

c - 确保 RichEdit 控件中的最后一个字符可见