MFC で CComboBoxEx コントロールを使用して、アドレスと関連サイト アイコンを表示するブラウザー アプリケーションのアドレス ボックスを実装しています。
このリンクによると: http://msdn.microsoft.com/en-us/library/bb775788(v=vs.85).aspx、-1 の iItem で 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);
SetItem が呼び出された後、時折アイコンが更新されないことがわかりました。新しいアイコンが設定された後も、以前のアイコンが表示されます。画像インデックスは変更されないことに注意してください。画像リスト内の実際のアイコンのみを更新しています。
興味深いことに、マウスを使用してコンボボックス内をクリックし、次に他のコントロール内をクリックしてコンボボックスがフォーカスを失うと、アイコンが更新されることがわかりました。プログラムでそれを行うこともできますが、それは厄介な回避策だと思います。
それ以外では、コンボボックスで Invalidate または RedrawWindow を呼び出しても、更新されていないときに新しいアイコンが表示されません。
これに関する経験やヒントは大歓迎です。どうもありがとう。