<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[TreeView Control + Item farbe]]></title><description><![CDATA[<p>Hey @all,</p>
<p>ist es möglich pro Item eine andere Farbe zu verwenden? und wenn ja wie bewerkstellige ich das?</p>
<p>Hier mal der Code den ich bisher habe:</p>
<pre><code>HTREEITEM AddItemToTree(HWND hwndTV, LPSTR lpszItem, HTREEITEM parent, HTREEITEM brother, int image = 1) { 
TVITEM tvi;
TVINSERTSTRUCT tvins; 
HTREEITEM hItem; 

  tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
  tvi.pszText = lpszItem; 
  tvi.cchTextMax = lstrlen(lpszItem);  
  tvi.iImage = image;
  tvi.iSelectedImage = image;

  // die Insert-Struktur wird vorbereitet
  tvins.item = tvi;
  if (brother) {
    tvins.hInsertAfter = brother;
  } else {
    tvins.hInsertAfter = TVI_FIRST;
  }
  if (parent==0) {
    tvins.hParent = TVI_ROOT;
  } else {
    tvins.hParent = parent;
  }

  // Nachricht zum Einbinden an das Kontrollelement versenden
  hItem = (HTREEITEM)SendMessage(hwndTV, TVM_INSERTITEM, 0, (LPARAM)&amp;tvins);  
  return hItem;
}
</code></pre>
<p>Die Reference speichere ich mir dann in einer std::map&lt;HTREEITEM, ItemInfo&gt;</p>
<pre><code>struct ItemInfo {
  int level;
};
</code></pre>
<p>nun möchte ich die komplette map durchgehen und die Items je nach &quot;level&quot; eine Farbe zuweisen.</p>
<p>Wäre sehr dankbar wenn mir diesbezüglich jemand helfen könnte</p>
<p>Lg _freeze_</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182360/treeview-control-item-farbe</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 13:40:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182360.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 May 2007 08:50:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TreeView Control + Item farbe on Thu, 24 May 2007 08:50:49 GMT]]></title><description><![CDATA[<p>Hey @all,</p>
<p>ist es möglich pro Item eine andere Farbe zu verwenden? und wenn ja wie bewerkstellige ich das?</p>
<p>Hier mal der Code den ich bisher habe:</p>
<pre><code>HTREEITEM AddItemToTree(HWND hwndTV, LPSTR lpszItem, HTREEITEM parent, HTREEITEM brother, int image = 1) { 
TVITEM tvi;
TVINSERTSTRUCT tvins; 
HTREEITEM hItem; 

  tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
  tvi.pszText = lpszItem; 
  tvi.cchTextMax = lstrlen(lpszItem);  
  tvi.iImage = image;
  tvi.iSelectedImage = image;

  // die Insert-Struktur wird vorbereitet
  tvins.item = tvi;
  if (brother) {
    tvins.hInsertAfter = brother;
  } else {
    tvins.hInsertAfter = TVI_FIRST;
  }
  if (parent==0) {
    tvins.hParent = TVI_ROOT;
  } else {
    tvins.hParent = parent;
  }

  // Nachricht zum Einbinden an das Kontrollelement versenden
  hItem = (HTREEITEM)SendMessage(hwndTV, TVM_INSERTITEM, 0, (LPARAM)&amp;tvins);  
  return hItem;
}
</code></pre>
<p>Die Reference speichere ich mir dann in einer std::map&lt;HTREEITEM, ItemInfo&gt;</p>
<pre><code>struct ItemInfo {
  int level;
};
</code></pre>
<p>nun möchte ich die komplette map durchgehen und die Items je nach &quot;level&quot; eine Farbe zuweisen.</p>
<p>Wäre sehr dankbar wenn mir diesbezüglich jemand helfen könnte</p>
<p>Lg _freeze_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291263</guid><dc:creator><![CDATA[_freeze_]]></dc:creator><pubDate>Thu, 24 May 2007 08:50:49 GMT</pubDate></item><item><title><![CDATA[Reply to TreeView Control + Item farbe on Thu, 24 May 2007 19:38:19 GMT]]></title><description><![CDATA[<p>Man kann dies in der MessageProc des Fensters beim Zeichnen des Listviews steuern. Eventuell ist es bei Treeviews ja ähnlich. Habe es selber noch nicht probiert. NMTVCUSTOMDRAW müsste da hilfreich sein.</p>
<p>Folgende Codeschnipsel könnten hilfreich sein. Es wird jede zweite Zeile blau eingefärbt. Die Bedingung kann man dabei selber bestimmen, da custom.dwItemSpec den Index des Listviewelements enthält. Ansonsten in der MSDN mal nach den Strukturen NMHDR, NMCUSTOMDRAW und LPNMLVCUSTOMDRAW bzw. dann NMTVCUSTOMDRAW suchen.</p>
<pre><code class="language-cpp">NMHDR                   notify;
   NMCUSTOMDRAW            custom;
   LPNMLVCUSTOMDRAW        lvcustom;
</code></pre>
<pre><code class="language-cpp">case WM_NOTIFY:
         lvcustom = (LPNMLVCUSTOMDRAW) lParam;
         custom = lvcustom-&gt;nmcd;
         notify = custom.hdr;
         if(  (notify.idFrom == IDC_LISTV)
            &amp;&amp;(notify.code   == NM_CUSTOMDRAW) )
         {
            switch(custom.dwDrawStage)
            {
               case CDDS_PREPAINT:
                  SetWindowLong(hDlg, DWL_MSGRESULT, CDRF_NOTIFYITEMDRAW);
                  return CDRF_NOTIFYITEMDRAW;

               case CDDS_ITEMPREPAINT:
                  SetWindowLong(hDlg, DWL_MSGRESULT, CDRF_NOTIFYSUBITEMDRAW);
                  return CDRF_NOTIFYSUBITEMDRAW;

               case CDDS_ITEMPREPAINT|CDDS_SUBITEM:
                  if(custom.dwItemSpec % 2 == 0)
                  {
                     lvcustom-&gt;clrTextBk = RGB(187, 233, 255);
                  }
                  break;
            }
         }
         break;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1291737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291737</guid><dc:creator><![CDATA[AlexB]]></dc:creator><pubDate>Thu, 24 May 2007 19:38:19 GMT</pubDate></item></channel></rss>