MFC CComboBoxEx图标更新问题



我使用MFC中的CComboBoxEx控件来实现浏览器应用程序的地址栏,该地址栏显示地址和相关站点图标。

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

的代码段
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在它没有更新时不会显示新图标。

在这方面的任何经验或提示将不胜感激。非常感谢。

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

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

After I changed

m_pImgLst->Create(32,20,ILC_COLOR32,2,2);

m_pImgLst->Create(32,20,ILC_COLOR16,2,2); 

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

最新更新