0

リストビューを作成しました

list[0]=CreateWindow(WC_LISTVIEW,L"",WS_DLGFRAME|WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_SINGLESEL,-,-,-,-,hwnd,NULL,hInstance,NULL);
LVCOLUMN lvcolumn;
lvcolumn.mask = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
lvcolumn.fmt = LVCFMT_CENTER;
lvcolumn.pszText = L"a";
lvcolumn.cx = 100;
ListView_InsertColumn(list[0],0,&lvcolumn);
lvcolumn.pszText = L"b";
ListView_InsertColumn(list[0],1,&lvcolumn);
lvcolumn.pszText = L"c";
ListView_InsertColumn(list[0],2,&lvcolumn);
lvcolumn.pszText = L"d";
ListView_InsertColumn(list[0],3,&lvcolumn);

そして、LPNMLVCUSTOMDRAW を使用してカラー アイテムを挿入します。

case WM_NOTIFY:
    if( ((LPNMHDR)lParam)->code == NM_CUSTOMDRAW){
        switch( ((LPNMLVCUSTOMDRAW)lParam)->nmcd.dwDrawStage){
            case CDDS_PREPAINT:
                return CDRF_NOTIFYITEMDRAW;
                break;
            case CDDS_ITEMPREPAINT:
            {
                LPNMLVCUSTOMDRAW customDraw = (LPNMLVCUSTOMDRAW)lParam;

                customDraw->clrText = getcolor();
                return CDRF_NEWFONT;
                break;
            }
            default: return CDRF_DODEFAULT;
        }
    }
    break;

getcolor は関数応答 colorref です。各アイテムには独自のテキスト色があります。ただし、親ウィンドウを非表示にして再度表示すると、アイテムの色が変わります。変更しないようにする方法、またはテキストの色を設定する別の方法があります

もう1つ、この方法で新しいリストビューアイテムを作成します(誰かが必要な場合に備えて)

ListView_InsertItem(hwndlist,&lvitem);
ListView_SetItemText(hwndlist,i,k,(LPWSTR)strarr[k].c_str());
4

0 に答える 0