直接贴代码
HBITMAP hBitmap;
hBitmap = (HBITMAP)::LoadImage(NULL, m_szBitmapPath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if (NULL == hBitmap)
{
//打印GetLastError 的值
}
然后我就遇到了很神奇的现象,hBitmap 为空,但是GetLastError 返回值为0,意思是操作完成。
之前查找解决方案的时候,遇到一种说法,BITMAP 的格式不对,但是图片我在Windows 上是可以正常打开的,就没有再考虑这一点。
尝试了很多种方法,这里把比较重要的记录下来:
1. 把图片换成一张4位的图片时可以打开,然后就开始疯狂的怀疑我代码中生成的图片太大了导致打不开,查了很多资料并没有卵用。
2. 无意间看到一个帖子:https://www.cctry.com/thread-278857-1-1.html
虽然有人跟帖说楼主说的不对,但是我在生成图片时一个高的确是用的负值,修改之后就可以成功加载了。
贴一下修改之后的代码:
kInfoHeader.biWidth = unWidth * 8;
kInfoHeader.biHeight = unWidth * 8;
所以出问题的并不是第一段代码,而是第二段代码,走了好多歪路,在这里记录一下。