リストビューでアイコンの背景色が変わらない – プログラミング – Home

リストビューでアイコンの背景色が変わら...
 
通知
すべてクリア

[解決済] リストビューでアイコンの背景色が変わらない

固定ページ 1 / 2

nfs
 nfs
(@nfs)
ゲスト
結合: 16年前
投稿: 48
Topic starter  

vista sp1
vc2008 Express Edition

リストビュー(レポート)をカスタムドローで表示しています。
LVS_EX_FULLROWSELECTで一行選択にしているんですが、アイコンの背景色だけが変化しま
せん。
どうすればいいのでしょうか?

ちなみにアイコンは次のように読み込んでいます。
SHGetFileInfo(szIconPath, 0, &info, sizeof(info), SHGFI_ICON | SHGFI_SMALLICON);


引用未解決
トピックタグ
.....
 .....
(@.....)
ゲスト
結合: 16年前
投稿: 16
 

SetListIconからのイメージリストをリストビューに登録してる?


返信引用
.....
 .....
(@.....)
ゲスト
結合: 16年前
投稿: 16
 

> アイコンの背景色だけが変化しません。
…表示は出来ているって事か、失礼。。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

.ico ファイルから読み込むのに SHGetFileInfo を使ってるんですか?
LoadImage とかでいいような気がする。

Express ってことは MFC は使ってないんですね。

あとは、アイコンにちゃんとマスクが入っているか、ImageList_Create に ILC_MASK を
渡しているか、とかでしょうか。


返信引用
nfs
 nfs
(@nfs)
ゲスト
結合: 16年前
投稿: 48
Topic starter  

aetosさん、回答ありがとうございます。

>.ico ファイルから読み込むのに SHGetFileInfo を使ってるんですか?
>LoadImage とかでいいような気がする。
32×32のアイコンを16×16にしたくてそうしています。

>あとは、アイコンにちゃんとマスクが入っているか、
アイコンにマスクが入っているというのは、どういう意味でしょうか?

>ImageList_Create に ILC_MASK を
>渡しているか、とかでしょうか。
ImageList_Create(16, 16, ILC_COLORDDB | ILC_MASK, 1, 1);
ImageList_Create()は多分大丈夫だと思います。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

イメージリストなんかやめて::DrawIcon()で自前で描画してみる
ってのも、一つの手ですtが、

 1.ImageList_AddIcon()を使ってますか。
 2.ILC_COLOR24にしてみたらどうなりますか。

なんてのが気にかかるところです。


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

聞きたいのは、アイコンの背景が透けないっていうことかな?

だとしたら、1つだけ確認したいのですが、
その問題のアイコンをデスクトップにコピーしてみてください。

デスクトップの背景は透けていますか?


返信引用
nfs
 nfs
(@nfs)
ゲスト
結合: 16年前
投稿: 48
Topic starter  

>イメージリストなんかやめて::DrawIcon()で自前で描画してみる
オーナードーローってことですか?

>1.ImageList_AddIcon()を使ってますか。
SHGetFileInfo(szIconPath, 0, &info, sizeof(info), SHGFI_ICON | SHGFI_SMALLICON);
ImageList_AddIcon(hSmall, info.hIcon);
はい、使っています。

>2.ILC_COLOR24にしてみたらどうなりますか。
ImageList_Create(16, 16, ILC_COLOR24 | ILC_MASK, 1, 1);
としましたが、結果は同じでした。


返信引用
nfs
 nfs
(@nfs)
ゲスト
結合: 16年前
投稿: 48
Topic starter  

>デスクトップの背景は透けていますか?
全てのアイコンをデスクトップにコピーして試しましたが、
全てのアイコンが透けていました。


返信引用
nfs
 nfs
(@nfs)
ゲスト
結合: 16年前
投稿: 48
Topic starter  

今気づいたのですが、仮想リストビューなのでそこの部分がおかしいのかなとも思いました。
if(pLvDispInfo->item.mask & LVIF_IMAGE)
{
pLvDispInfo->item.iImage = nImageNumber;
pLvDispInfo->item.stateMask = 0;
pLvDispInfo->item.state = 0;
}


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

> 全てのアイコンをデスクトップにコピーして試しましたが、
> 全てのアイコンが透けていました。
ということはアイコン側の問題ではないですね。

その先の話は、現在、検証中...


返信引用
nfs
 nfs
(@nfs)
ゲスト
結合: 16年前
投稿: 48
Topic starter  

>アイコンの背景色だけが変化しません。
↑これはアイテムが選択状態にあるときです。orz


返信引用
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

・アイコンファイルの背景色を、「画面の色(透過)」から、「反転色」に塗りなおし
・CImageListのILC_MASKをはずす。


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

やっと再現できました。
と思ったら、すでに解決方法が出てますね。
ryoさんの方法でうまくいきました。


返信引用
nfs
 nfs
(@nfs)
ゲスト
結合: 16年前
投稿: 48
Topic starter  

>アイコンファイルの背景色を、「画面の色(透過)」から、「反転色」に塗りなおし
ryoさん、bunさん、ありがとうございます。
アイコンファイルの背景色を反転色にするにはどうするのでしょうか?


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました