[英]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.