首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MFC CComboBoxEx图标更新问题

MFC CComboBoxEx图标更新问题
EN

Stack Overflow用户
提问于 2011-07-29 00:32:15
回答 2查看 1K关注 0票数 0

我正在使用MFC中的CComboBoxEx控件为浏览器应用程序实现一个地址框,它显示地址和相关的站点图标。

根据这个链接:http://msdn.microsoft.com/en-us/library/bb775788(v=vs.85).aspx,调用iItem为-1的CComboBoxEx::SetItem将修改编辑控件中当前显示的项。下面是我用来

代码语言:javascript
运行
复制
HICON hIcon=LoadIcon(....);     //load the new icon from somewhere
imagelist.Replace(1,hIcon);     //replace the existing icon in the image list.
int nImage=1;

item.mask = CBEIF_IMAGE|CBEIF_SELECTEDIMAGE ;
item.iItem = -1;
item.iImage = nImage;
item.iSelectedImage = nImage;
SetItem(&item);

我发现在调用SetItem之后,图标有时不会更新。在设置新图标后,它仍然显示以前的图标。请注意,图像索引永远不会改变。我只是在更新图片列表中的实际图标。

有趣的是,我发现如果我用鼠标在组合框中单击,然后在其他控件中单击,导致组合框失去焦点,图标将会更新。我可以通过编程来做到这一点,但我觉得这是一个笨拙的变通办法。

除此之外,在组合框上调用Invalidate或RedrawWindow不会让新图标在没有更新时显示出来。

在这方面的任何经验或技巧都将非常感谢。非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2011-07-29 09:49:55

您可能需要再次调用CComboBoxEx::SetImageList

票数 0
EN

Stack Overflow用户

发布于 2013-08-01 08:47:02

我曾经遇到过类似的问题。后来,我发现原因是我创建CImageList时的原因。

在我变了之后

代码语言:javascript
运行
复制
m_pImgLst->Create(32,20,ILC_COLOR32,2,2);

代码语言:javascript
运行
复制
m_pImgLst->Create(32,20,ILC_COLOR16,2,2); 

直到收到WM_KILLFOCUS才更新的现象消失了。但遗憾的是,图像没有以前那么漂亮了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6862404

复制
相关文章

相似问题

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