我在一个函数中的CImageList中插入了位图,并且需要在另一个函数中稍后更改一些图像.但我无法提取CBitmap.代码如下:
CBitmap GetIndividualBitmap(CImageList oImgList, int nBmpNo)
{
IMAGEINFO imgInfo;
imagelist.GetImageInfo(index,imgInfo);
CBitmap bmp;
bmp.FromHandle(imgInfo.hbmImage);
return bmp;
}
Run Code Online (Sandbox Code Playgroud)
但是我得到的只是黑屏.谁能指出我哪里出错了?
好的,你的代码中有很多错误
1)您正在按对象传递图像列表,这意味着它将复制它.通过引用传递它是一个更好的计划.
2)您没有将指向IMAGEINFO结构的指针传递给GetImageInfo.
3)你误解了"FromHandle"是如何运作的.FromHandle是一个静态函数,它返回一个指向Bitmap的指针.在您的代码中,您正在调用该函数,然后忽略返回的CBitmap*并返回新构造的对象的副本(即它不包含任何内容),这会导致您的黑屏.
考虑到所有这些因素,您应该拥有如下代码:
CBitmap* GetIndividualBitmap(CImageList& oImgList, int nBmpNo)
{
IMAGEINFO imgInfo;
oImgList.GetImageInfo( nBmpNo, &imgInfo );
return CBitmap::FromHandle( imgInfo.hbmImage );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3229 次 |
| 最近记录: |