1

現在、TreeView アイテムの背景色を変更しようとしています。したがって、このメッセージを使用してアイテムを作成しています。

    SendMessage(ListView, LVM_INSERTITEM, 0, (LPARAM)&lvI);

さらに、次のようなカスタム描画メッセージを処理しています:

        case WM_NOTIFY:
        {
            LPNMLISTVIEW pnm = (LPNMLISTVIEW)lParam;
            if (pnm->hdr.code == NM_CUSTOMDRAW)
            {
                LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lParam;
                switch (lplvcd->nmcd.dwDrawStage)
                {
                    case CDDS_PREPAINT :
                        return CDRF_NOTIFYITEMDRAW;
                    case CDDS_ITEMPREPAINT:
                        lplvcd->clrTextBk = ???;

                        return CDRF_NEWFONT;
                }
            }

これはうまく機能し、色を好きなように設定できますが、メッセージを送信するときに色をパラメーターとして渡す方法はまだ見つかりません。結局のところ、定数またはランダムな色しか割り当てられない場合、カスタム描画は役に立ちません。

助けてくれてありがとう!

4

2 に答える 2

2

項目をリストに追加するとき、LVIF_PARAMフラグを設定して構造体のlParamメンバーを入力することにより、独自のデータを渡すことができます。LVITEMこれは として返されますNMCUSTOMDRAW::lItemlParam

メッセージ自体にlParam付属しているものに混乱しないでください。それは別のものです:)WM_NOTIFYlParam

于 2013-05-30T12:50:02.913 に答える