リストビューの列の色を変えるには? – プログラミング – Home

リストビューの列の色を変えるには?
 
通知
すべてクリア

[解決済] リストビューの列の色を変えるには?


レモン
 レモン
(@レモン)
ゲスト
結合: 24年前
投稿: 12
Topic starter  

教えてください。

リストビューで列ごとに色を付けたいのですが、どうすればよいのか分かりません。

列ごとに色を変えることができるのか、
また出来るのであれば、その方法を教えてください。


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

NM_CUSTOMDRAWメッセージ処理を追加すれば出来たと思いましたがどうでしょう?


返信引用
レモン
 レモン
(@レモン)
ゲスト
結合: 24年前
投稿: 12
Topic starter  

返信ありがとうございます。

調べて、NM_CUSTOMDRAWメッセージを処理してみたのですが、
どうやって、リストビューの列を指定して、その色を設定すればいいのか
わかりません。

すみませんが、詳しく教えていただけないでしょうか?


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

> すみませんが、詳しく教えていただけないでしょうか?
あまり詳しくないですが・・・

ListView_GetItemRect、ListView_GetSubItemRectで項目ごとの範囲を所得、その範囲を塗りつぶす。

これで出来たと思います。


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

補足です。

> ListView_GetItemRect、ListView_GetSubItemRectで項目ごとの範囲を所得、その範囲を塗りつぶす。
NM_CUSTOMDRAWメッセージで、です。


返信引用
レモン
 レモン
(@レモン)
ゲスト
結合: 24年前
投稿: 12
Topic starter  

返答ありがとうございます。

いろいろやってみてはいるのですが、私の知識不足でなかなかうまくいきません。

また、色をつけるときはどのような関数を使えばいいですか?
今はFillRect関数を使ってみたのですが…。
色を付ける関数も教えていただきたいです。

どのようにしているかというと、

RECT rect;
HDC hDC;
LPNMLISTVIEW pnm = (LPNMLISTVIEW)lParam;

hBrush = CreateSolidBrush(RGB(0,0,0));

case WM_NOTIFY:
switch (pnm->hdr.code)
{
case NM_CUSTOMDRAW:
hDC = GetDC(hWnd);
ListView_GetSubItemRect(GetDlgItem(hWnd,IDL_MEISAI), 2, 2, LVIR_BOUNDS, &rect );
FillRect( hDC, &rect, hBrush );
break;
}
break;

上記のような感じです。
間違い等、教えてください。


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

一見では問題ないように思います。
気になる点をいくつか・・・

・ListView_GetSubItemRect、FillRectの戻り値はTRUEになってますか?
・hWndを::AfxGetMainWnd()->m_hWndに置き換えてみては?

・MFCは使わないのでしょうか?


返信引用
レモン
 レモン
(@レモン)
ゲスト
結合: 24年前
投稿: 12
Topic starter  

何度も返答ありがとうございます。

もう一度やってみたところ、希望している所ではありませんが色を設定することができました。
場所はなんとかがんばってみます。

ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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