教えてください。
リストビューで列ごとに色を付けたいのですが、どうすればよいのか分かりません。
列ごとに色を変えることができるのか、
また出来るのであれば、その方法を教えてください。
NM_CUSTOMDRAWメッセージ処理を追加すれば出来たと思いましたがどうでしょう?
返信ありがとうございます。
調べて、NM_CUSTOMDRAWメッセージを処理してみたのですが、
どうやって、リストビューの列を指定して、その色を設定すればいいのか
わかりません。
すみませんが、詳しく教えていただけないでしょうか?
> すみませんが、詳しく教えていただけないでしょうか?
あまり詳しくないですが・・・
ListView_GetItemRect、ListView_GetSubItemRectで項目ごとの範囲を所得、その範囲を塗りつぶす。
これで出来たと思います。
補足です。
> ListView_GetItemRect、ListView_GetSubItemRectで項目ごとの範囲を所得、その範囲を塗りつぶす。
NM_CUSTOMDRAWメッセージで、です。
返答ありがとうございます。
いろいろやってみてはいるのですが、私の知識不足でなかなかうまくいきません。
また、色をつけるときはどのような関数を使えばいいですか?
今は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;
上記のような感じです。
間違い等、教えてください。
一見では問題ないように思います。
気になる点をいくつか・・・
・ListView_GetSubItemRect、FillRectの戻り値はTRUEになってますか?
・hWndを::AfxGetMainWnd()->m_hWndに置き換えてみては?
・MFCは使わないのでしょうか?
何度も返答ありがとうございます。
もう一度やってみたところ、希望している所ではありませんが色を設定することができました。
場所はなんとかがんばってみます。
ありがとうございました。