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

解決


曲゛タ  2007-08-31 23:09:16  No: 66151

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

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 23:14:47  No: 66152

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


曲゛タ  2007-08-31 23:32:25  No: 66153

すいません、VC2005です。


Blue  2007-09-01 10:09:21  No: 66154

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

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 20:41:32  No: 66155

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


Blue  2007-09-01 21:24:40  No: 66156

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

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


曲゛タ  2007-09-01 23:25:04  No: 66157

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加