1

CListCtrl (またはリスト ビュー コントロール) にアイコンを追加すると、なぜこの黒いアウトラインが表示されるのかわかりません。

ここに画像の説明を入力

私はそれを次のようにロードします:

//HICON hIcon;
LoadIconWithScaleDown(theApp.m_hInstance, MAKEINTRESOURCE(Icon_ID), 15, 15, &hIcon);

次に、イメージ リストを次のように作成します。

//CImageList iml;
iml.Create(15, 15, ILC_COLOR32, numberIcons, 0);
iml.Add(hIcon);

リスト ビューが最初に準備されます。

//CListCtrl lst;
lst.SetExtendedStyle(LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT | 
    LVS_EX_LABELTIP | LVS_EX_HEADERDRAGDROP | LVS_EX_SUBITEMIMAGES);
lst.ModifyStyle(0, LVS_SHOWSELALWAYS);

アイコンは、リストのサブアイテムに次のように表示されます。

int nInd = lst.InsertItem(c, L"Main label");

lst.SetItem(nInd, nSubitemIndex, LVIF_TEXT | LVIF_IMAGE, L"2 files", nIconInd, 0, 0, 0);

それで、私は何を間違っていますか?

PS。このテストは、32 ビット トゥルーカラー ディスプレイ設定の Windows 8.1 で実行しました。

アイコン自体は256色の画像ですが、このような小さなサイズとシンプルなデザインのためにアルファチャンネルを備えた32ビットのアイコンでスペースを浪費する理由が見当たらないためです。

ここに画像の説明を入力

4

3 に答える 3

2

LVS_EX_FULLROWSELECTにはXPで透明性の問題があります。おそらくそれに遭遇するでしょう。透過性を維持するために、イメージをリスト ビューにオーナー ドローする必要がある場合があります。または、イメージを 1 つのイメージ リストにロードし、リスト ビューの色と一致する背景色でイメージのコピーを別のイメージ リストにレンダリングし、リスト ビューで 2 番目のイメージ リストを使用します。

于 2014-06-17T17:42:11.817 に答える