VC++6.0 WindowsXPです。
リストコントロール(レポート)の
現在選択されている行全体の背景色を変更したいのですが・・・
デフォルトではグレイになってるようです。
誰かわかる方いませんか?
三草です。
カスタムドローもしくは、オーナードローを使うことになるかと思います。
以下、ご参考までに。。。
リストビューコントロールの背景色を変えたい
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200508/05080001.txt
リストコントロールの文字色を変える
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200209/02090029.txt
>カスタムドローもしくは、オーナードローを使うことになるかと思います。
カスタムドローで作成してます。
アイテムごとの背景色の設定はできているのですが、
選択行の背景色の設定ができないのです。
NMCUSTOMDRAW構造体のuItemStateで状態を判定できませんでしょうか?
参考
http://www.kumei.ne.jp/c_lang/sdk3/sdk_261.htm
>NMCUSTOMDRAW構造体のuItemStateで状態を判定できませんでしょうか?
う~ん。いまいちわかりません。
> う~ん。いまいちわかりません。
では、どこまで調べて、どこまで試して、どこまでならわかるのでしょうか。
「大三元 さんのいまいち」は大三元 さん以外の人にはいまいちわかりません。
とりあえず、デバッグで止めてどんな時にどんなuItemStateが返ってきているかとか
調べて見てはどうですか?
ステータスの内容はヘッダーファイルを検索すればどのファイルに定義されているか
わかるでしょうし、それと実際の状況を照らし合わせてみると何かわかるかもしれませんよ。
Banさんも書かれていますけれど、大三元さんが何処をどう調べてどう考えたのかが
全くかかれていないので読んでいても状況が全く伝わってきません。
掲示板では書かれている内容が全てなので書かれていなければ、大三元さんがどれだけ
調べていても何もしていないと思われてしまいます。
状況を伝える努力をお願いします。
(えてしてこの努力のお陰で自己解決する場合もありますが)
あと参考になりそうなページがあったので一応リンクしておきます。
http://forums.belution.com/ja/vc/000/358/36s.shtml
兎にも角にも大三元さんがきちんと理解して先に進まないと意味が無いので
理解できるまで頑張ってください。
できました~(^_^)
PATIOさんの参考ページを元に、
以下の関数内にif文を追加したらできました。
void CxxxDlg::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLVCUSTOMDRAW lcd=(LPNMLVCUSTOMDRAW)pNMHDR;
switch( lcd->nmcd.dwDrawStage ){
case CDDS_PREPAINT :
*pResult = CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
lcd->clrTextBk = lcd->nmcd.lItemlParam;
*pResult = CDRF_NEWFONT;
break;
default:
*pResult = CDRF_DODEFAULT;
}
// 選択行の背景色を変更
if (lcd->nmcd.uItemState & CDIS_SELECTED) {
lcd->clrTextBk = RGB(0, 0, 255);
lcd->nmcd.uItemState &= ~CDIS_SELECTED;
}
}