- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一个函数的 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/
我在我们的项目中遇到了 GDI 泄漏问题,所以我开始寻找可能的问题。我找到了一个地方,实现者使用 LoadIcon 创建了新的图标实例,我知道我们必须在关闭嵌入它的元素时使用 DestroyIcon
我有一个在特定情况下提示的菜单。我有一个位图图像,其中包含我想添加到菜单中的图标。 首先,我加载了如下图像列表: CImageList imageList; imageList.Create(18,
我在一个函数的 CImageList 中插入了位图,稍后需要在另一个函数中更改一些图像。但我无法提取 CBitmap。代码是这样的: CBitmap GetIndividualBitmap(CImag
我想知道是否可以创建具有 alpha 混合透明度的 CImageList。 创建具有丑陋透明度(无 alpha 混合)的 CImageList 的示例代码 CGdiPlusBitmapResource
我在 CDialog 中有以下代码。此代码在 Windows 7 上完美运行,但在 Windows XP SP3 上它的颜色始终为黑色。 UINT color_flags = CWindowDC(th
我正在尝试将图像添加到工具栏的图像列表中,它是 CMainFrame 的成员 startStopPicture.LoadBitmapW(IDB_STOP_PIC); m_ToolBar.GetTool
我遇到的其他几个问题与此非常相似: Is it possible to create a CImageList with alpha blending transparency? Transparen
您可以在 CComboBoxEx 中使用的透明图标似乎有 16 个限制。我有以下伪代码: m_ImageList.Create(16,16,ILC_COLOR32,TF_COUNT,1); for (
我是一名优秀的程序员,十分优秀!