首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CImageList中获取CBitmap

从CImageList中获取CBitmap
EN

Stack Overflow用户
提问于 2010-01-20 18:20:57
回答 1查看 3.7K关注 0票数 1

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

代码语言:javascript
复制
CBitmap GetIndividualBitmap(CImageList oImgList, int nBmpNo)
{   
    IMAGEINFO imgInfo;
    imagelist.GetImageInfo(index,imgInfo);
    CBitmap bmp;
    bmp.FromHandle(imgInfo.hbmImage);
    return bmp;
}

然而,我得到的只是一个黑屏。有谁能指出我哪里错了吗?

EN

回答 1

Stack Overflow用户

发布于 2010-01-20 23:55:13

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

1)您正在按对象传递图像列表,这意味着它将复制它。通过引用传递它是一个好得多的计划。

2)您没有将指向IMAGEINFO结构的指针传递到GetImageInfo中。

3)您误解了"FromHandle“的工作原理。FromHandle是一个静态函数,它返回指向位图的指针。在您的代码中,您正在调用函数,然后忽略返回的CBitmap*,并返回一个新构造的对象的副本(即,它不包含任何内容),这将导致您的黑屏。

考虑到所有这些因素,你应该有如下代码:

代码语言:javascript
复制
CBitmap* GetIndividualBitmap(CImageList& oImgList, int nBmpNo) 
{
    IMAGEINFO imgInfo;
    oImgList.GetImageInfo( nBmpNo, &imgInfo );
    return CBitmap::FromHandle( imgInfo.hbmImage );
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2100563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档