当我加载 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 。
最佳答案
好的。我找到了导致问题的原因。
问题是 BITMAPINFOHEADER 的 biSizeImage 成员设置不正确。
但是经过一个不眠之夜,当我测试两个图像(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/