リストコントロールの選択行の色の変更 – プログラミング – Home

リストコントロールの選択行の色の変更
 
通知
すべてクリア

[解決済] リストコントロールの選択行の色の変更


大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

VC++6.0 WindowsXPです。

リストコントロール(レポート)の
現在選択されている行全体の背景色を変更したいのですが・・・
デフォルトではグレイになってるようです。
誰かわかる方いませんか?


引用未解決
トピックタグ
三草
 三草
(@三草)
ゲスト
結合: 19年前
投稿: 56
 

三草です。

カスタムドローもしくは、オーナードローを使うことになるかと思います。

以下、ご参考までに。。。

リストビューコントロールの背景色を変えたい
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


返信引用
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

>カスタムドローもしくは、オーナードローを使うことになるかと思います。
カスタムドローで作成してます。

アイテムごとの背景色の設定はできているのですが、
選択行の背景色の設定ができないのです。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

NMCUSTOMDRAW構造体のuItemStateで状態を判定できませんでしょうか?
参考
http://www.kumei.ne.jp/c_lang/sdk3/sdk_261.htm


返信引用
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

>NMCUSTOMDRAW構造体のuItemStateで状態を判定できませんでしょうか?
う~ん。いまいちわかりません。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

> う~ん。いまいちわかりません。
では、どこまで調べて、どこまで試して、どこまでならわかるのでしょうか。
「大三元 さんのいまいち」は大三元 さん以外の人にはいまいちわかりません。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

とりあえず、デバッグで止めてどんな時にどんなuItemStateが返ってきているかとか
調べて見てはどうですか?
ステータスの内容はヘッダーファイルを検索すればどのファイルに定義されているか
わかるでしょうし、それと実際の状況を照らし合わせてみると何かわかるかもしれませんよ。
Banさんも書かれていますけれど、大三元さんが何処をどう調べてどう考えたのかが
全くかかれていないので読んでいても状況が全く伝わってきません。
掲示板では書かれている内容が全てなので書かれていなければ、大三元さんがどれだけ
調べていても何もしていないと思われてしまいます。
状況を伝える努力をお願いします。
(えてしてこの努力のお陰で自己解決する場合もありますが)

あと参考になりそうなページがあったので一応リンクしておきます。
http://forums.belution.com/ja/vc/000/358/36s.shtml

兎にも角にも大三元さんがきちんと理解して先に進まないと意味が無いので
理解できるまで頑張ってください。


返信引用
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

できました~(^_^)
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;
}
}


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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