gpt4 book ai didi

mfc - 从 CImageList 中获取 CBitmap

转载 作者:行者123 更新时间:2023-12-05 09:25:31 27 4
gpt4 key购买 nike

我在一个函数的 CImageList 中插入了位图,稍后需要在另一个函数中更改一些图像。但我无法提取 CBitmap。代码是这样的:

CBitmap GetIndividualBitmap(CImageList oImgList, int nBmpNo)
{
IMAGEINFO imgInfo;
imagelist.GetImageInfo(index,imgInfo);
CBitmap bmp;
bmp.FromHandle(imgInfo.hbmImage);
return bmp;
}

但是我得到的只是黑屏。谁能指出我哪里出错了?

最佳答案

好的,你的代码中有很多错误

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 );
}

关于mfc - 从 CImageList 中获取 CBitmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2100563/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com