我正在使用MFC中的CComboBoxEx控件來爲顯示地址和相關站點圖標的瀏覽器應用程序實現地址框。MFC CComboBoxEx圖標更新問題
根據此鏈接:http://msdn.microsoft.com/en-us/library/bb775788(v=vs.85).aspx,使用iItem爲-1調用CComboBoxEx :: SetItem將修改當前顯示在編輯控件中的項目。以下是代碼段我用
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);
我發現ocassionally SetItem被稱爲圖標後不更新。新圖標設置後,它仍然顯示上一個圖標。請注意圖像索引從不改變。我只更新圖像列表中的實際圖標。
有趣的是,我發現如果我用鼠標點擊組合框內部,然後點擊一些其他控件內部,使組合框失去焦點,圖標將更新。我可以通過編程的方式來做到這一點,但我覺得這是一個棘手的解決方法。
除此之外,在組合框調用Invalidate或RedrawWindow時,不會在不更新時顯示新圖標。
任何經驗或技巧將不勝感激。非常感謝。
我試過了。它大部分時間都在工作。但有些時候它仍然不會更新。然後會發生什麼,如果我在組合框中點擊,然後點擊其他地方,圖標就會更新。 – Stephen