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);
私は、SetItemが呼び出された後、アイコンが更新されないことがわかりました。新しいアイコンが設定されても、前のアイコンが表示されます。イメージインデックスは決して変更されないことに注意してください。私はイメージリスト内の実際のアイコンのみを更新しています。
興味深いことに、マウスを使用してコンボボックス内をクリックしてから、コンボボックスがフォーカスを失うように他のコントロールをクリックすると、アイコンが更新されることがわかりました。私はプログラムでそれを行うことができますが、私はそれが厄介な回避策だと感じています。
それ以外の場合、コンボボックスでInvalidateまたはRedrawWindowを呼び出すと、更新されないときに新しいアイコンが表示されません。
これに関するあらゆる経験やヒントをお待ちしております。どうもありがとう。
私はそれを試みました。それはほとんどの時間に働きます。しかし、事実、それはまだ更新されません。それが起こった場合、コンボをクリックして別の場所をクリックすると、アイコンが更新されます。 – Stephen