リストビューの列の色を変えるには?

[戻る]
レモン 2001/05/17(木) 17:46:13
教えてください。

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

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

2001/05/18(金) 12:03:18
NM_CUSTOMDRAWメッセージ処理を追加すれば出来たと思いましたがどうでしょう?

レモン 2001/05/18(金) 20:21:40
返信ありがとうございます。

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

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

2001/05/19(土) 21:23:51
> すみませんが、詳しく教えていただけないでしょうか?
あまり詳しくないですが・・・

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

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

2001/05/19(土) 21:26:26
補足です。

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

レモン 2001/05/22(火) 09:35:32
返答ありがとうございます。

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

また、色をつけるときはどのような関数を使えばいいですか?
今は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;

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

2001/05/22(火) 12:00:33
一見では問題ないように思います。
気になる点をいくつか・・・

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

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

レモン 2001/05/23(水) 09:47:38
[[解決]]
何度も返答ありがとうございます。

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

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

古いスレッドには追加発言できません。