2

当我加载 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 - 很好,微软代理字符编辑器 - 失败了,我的应用程序 - 失败了!今天测试 - 现在工作!10 分钟前再次测试 - 不工作。应该是某种锁吧?我发现了类似的问题:http ://social.msdn.microsoft.com/Forums/pl-PL/vcmfcatl/thread/df4aa858-6d59-402d-8d96-6414774fed31 。

4

3 回答 3

2

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

问题是BITMAPINFOHEADER的biSizeImage成员设置不正确。

但是在不眠之夜测试两张图像(80x80、128x128)之后,我发现了一些有趣的东西。

LoadImage仍然成功地从0real size + 1052加载不正确的biSizeImage图像。例如对于 80x80 图像,biSizeImage必须为 6400,但LoadImage加载图像时将biSizeImage设置为 0 或 1,或 6401,或 6402……但设置 7453 后失败。

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

于 2012-07-14T09:31:07.477 回答
1

尝试改用 GDI+。它具有更多的图像处理功能:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms535411 (v=vs.85).aspx

于 2012-07-13T12:29:57.487 回答
0

由于文件在 中C:\,也许您没有访问权限?尝试将其放在桌面或我的文档上。

此外,更新到 XP SP3 也不会受到影响。

于 2012-07-12T11:28:45.260 回答