簡體   English   中英

顏色特定 treeview 項目使用 WIN32 API (C/C++)

[英]Color specific treeview item using WIN32 API (C/C++)

我想創建一個樹視圖,其中特定項目具有不同的背面和文本 colors。 我確實在互聯網上找到了以下解決方案: Win32 Custom Draw Treeview Control ,但這里他們根據每個項目的級別為每個項目着色。 這與我想要的很接近,但我只想為特定的 treeview 項目着色,而不管其級別如何,比如說它的 TVITEM 句柄或它的 HTREEITEM。

是否可以使用NM_CUSTOMDRAW消息來做這樣的事情? 如果沒有,我怎么能做這樣的事情?

編輯:我一直在嘗試使用該項目的lParam來識別 treeview 項目,但由於某種原因這些項目仍然不可見。 這是我的 function 應該處理自定義繪圖:

/*
This function will custom draw a tree view
Input: (LRESULT*) res = To store the result (by reference, to be stored)
       (HWND) window = The handled window
       (LPNMTVCUSTOMDRAW) item = The item to draw
       (TVITEM) tvItem = The tv item that should be custom drawn
Output: (BOOL) TRUE if should use the stored value, otherwise FALSE
*/
BOOL customDrawTreeView(LRESULT* res, HWND window, LPNMTVCUSTOMDRAW item, TVITEM tvItem)
{
    switch (item->nmcd.dwDrawStage)
    {
    case CDDS_PREPAINT:
        *res = CDRF_NOTIFYITEMDRAW;
        return TRUE;
        break;
    case CDDS_ITEMPREPAINT:
        if (tvItem.lParam == item->nmcd.lItemlParam)
        {
            item->clrTextBk = 0x383838;
            item->clrText = RGB(255, 255, 255);
            *res = CDRF_SKIPDEFAULT;
            return TRUE;
        }

        break;
    }

    return FALSE;
}

是的。 您可以使用TVITEM::lParam成員將信息附加到樹項。 該值與NMTVCUSTOMDRAW結構的nmcd.lItemlParam成員中的NM_CUSTOMDRAW消息一起發送。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM