リストビューの文字色変更

解決


曲゛タ  2007-08-31 14:09:16  No: 66151  IP: 192.*.*.*

リストビューの文字色を変更したいのですが、
オーナードローが難しすぎて行き詰っています。
どなたか、オーナードローの仕方を簡単に教えてくれる方か
文字色を簡単に変更できる方法を教えてください。

m_listview.SetTextColor(RGB(255,255,255));
m_listview.SetTextBkColor(RGB(0,0,0));
m_listview.SetBkColor(RGB(0,0,0));
で文字色は変更できたのですが。
全部変更したいのではなく
私がしたいのは個別にある文字だけ色変更がしたいです。

どうか宜しくお願いします。

編集 削除
Blue  2007-08-31 14:14:47  No: 66152  IP: 192.*.*.*

簡単に実現したいのであればカスタムドローですね。
(VC++のバージョンが書かれていないのでこれ以上のアドバイスは不可)

編集 削除
曲゛タ  2007-08-31 14:32:25  No: 66153  IP: 192.*.*.*

すいません、VC2005です。

編集 削除
Blue  2007-09-01 01:09:21  No: 66154  IP: 192.*.*.*

ダイアログだとすると、リソースエディタより
リストコントロールを選択して、(通常は右にある)プロパティウィンドウの
管理イベント(雷マークのやつ)より

NM_CUSTOMDRAW

のイベントハンドラを作成します。
あとは
http://www24.cds.ne.jp/~neg/pro/piyo1/clc/custom.html
のCTest0031Dlg::OnCustomDraw関数ように記述すればいいです。

たとえば、上から2行目の文字の色を赤に変えるならば

void CSampleDlg::OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult)
{
    //LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
    // TODO: ここにコントロール通知ハンドラ コードを追加します。

    LPNMLVCUSTOMDRAW pNMLVCD = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR);

    switch(pNMLVCD->nmcd.dwDrawStage)
    {
    case CDDS_PREPAINT:
        *pResult = CDRF_NOTIFYSUBITEMDRAW;
        break;
    case CDDS_ITEMPREPAINT:
        *pResult = CDRF_NOTIFYSUBITEMDRAW;
        break;
    case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
        *pResult = CDRF_DODEFAULT;

        if (pNMLVCD->nmcd.dwItemSpec == 1)  // 変えたい行(0から)
        {
            pNMLVCD->clrText = RGB(0xff,0x00,0x00); // 文字色
            *pResult = CDRF_NEWFONT;
        }
        break;
    default:
        *pResult = CDRF_DODEFAULT;
        break;
    }

    //*pResult = 0;
}

といった感じになります。

編集 削除
曲゛タ  2007-09-01 11:41:32  No: 66155  IP: 192.*.*.*

ご回答ありがとうございます。
私もそこ見て解決してました!
あと、リソースビューの"項目”(リストービューの頭のところの
文字色も変更する方法はないものでしょうか?
項目のclrTextBkの色も変更する方法があったら教えてください。

編集 削除
Blue  2007-09-01 12:24:40  No: 66156  IP: 192.*.*.*

とりあえずヘッダーのところはカスタムドローでは無理です。
オーナードローのみになります。

>項目のclrTextBk
とは?サブアイテムのこと?
リンク先に載っていますよ。

編集 削除
曲゛タ  2007-09-01 14:25:04  No: 66157  IP: 192.*.*.*

いや、項目のclrTextBk
ヘッダーのバックのことです。
わかりました!ありがとうございました〜

編集 削除