0

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 を呼び出しても、更新されていないときに新しいアイコンが表示されません。

これに関する経験やヒントは大歓迎です。どうもありがとう。

4

2 に答える 2

0

おそらく、 CComboBoxEx::SetImageListを再度呼び出す必要があります。

于 2011-07-29T01:49:55.410 に答える
0

私はかつて同様の問題に遭遇しました。後で、原因が作成時の CImageList であることがわかりました。

私が変わった後

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

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

受信するまで更新する現象がWM_KILLFOCUSなくなりました。ただ、以前より少し絵が綺麗でないのが残念です。

于 2013-08-01T00:47:02.177 に答える