开发过程中遇到一个问题,CImageList::GetImageInfo取到的HBITMAP不能直接使用,比如取颜色值都是空的。
IMAGEINFO info;
m_comboColor.GetImageList()->GetImageInfo(index, &info);
//HBITMAP hbmp = info.hbmImage;
//必须复制一份再进行操作,否则取不到值
HBITMAP hbmp = (HBITMAP)CopyImage(info.hbmImage,
IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG);
//如果想得到指定子图像数据,必须根据指定子图像区域rcImage从整个图像hbmImage中取出数据
RECT rect = info.rcImage;//对于索引子图像的范围
DeleteObject(hbmp);
必须调用CopyImage复制一份出来才能正常使用。
还有个点要注意,取出来的IMAGEINFO 里的HBITMAP 是CImageList里存贮的图像合起来的一整个大的图像,需要根据rcImage再取出对应区域的子图像(好坑啊)。