一个像素引发的惨案---CImageList

一个像素引发的惨案---CImageList


很久没有发生这样的惨案了

那是2007年8月29日的下午,天空仍然裹着小雨。早晨跟另外两个同事一起挤一把伞的情形还历历在目,裤腿湿了,大半个人都湿了。一阵风吹来,……

怎么这个Icon还是不显示!

我们经常用CImageList 来存放一组Bitmap,然后从中extract icon 出来。而MFC中大多数的控件也经常需要SetImageList才能显示Icon。用了那么多CImageList,用了那么多的CXXXCtrl,也没有遇到今天的问题:设置给控件最后的一个ICON死活是显示不出来;而在另外一个测试程序里却可以正常显示。

CImageList m_imageList;

// -----------------
m_iamgeList.Create(IDB_XXX,  16 1 , RGB( 255 , 0 , 0 ));

m_xCtrl.SetImageList(
& m_iamgeList);

.


X0分钟过去了,寻思了N种可能还是没有思路。恰好有人闲聊起来,就将问题描述了一下。还没等描述完,突然想到,莫非是Bitmap的问题?没有怀疑过Produc里原来的bitmap资源文件会有问题,check了一下发现大小是95*16, 这95/16得#¥%#?莫非因为宽度这少了点?Try......OK!

这解决问题的过程非常令人头晕,但问题已解决,就发现不过如此。

如果CImageList加载的Bitmap是用来做ICON,bitmapWidth = iconCount * iconWidth。如果不小心少了点,最后那个可就create不成功喽。


DownLoad

你可能感兴趣的:(一个像素引发的惨案---CImageList)