<?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 mit systemicons]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe einen funktionierenden treeview aber leider ohne Icons. Ich möchte nun keine Eigenen sondern das jewailige Systemicon vor der Datei in meinem treeview anzeigen lassen. Meine Programmierumgebung ist VC++ 6.0.</p>
<p>Wie bekomme ich die Systemicons in meine ImageList und wie bekomme ich den Index auf das richtige Icon zum Dateityp?</p>
<p>Bitte keine Links posten, die meisten kenne ich nach meiner 3tägigen Suche. Ich bin für aussagekräfitgen Quelltext dankbar.</p>
<p>Auszug aus meinem Quelltext:</p>
<pre><code class="language-cpp">//treeview
 CTreeCtrl* pTree = (CTreeCtrl*)GetDlgItem(IDC_TREE);

 //Imagelist mit Systemicons, keine Ahnung wie =)
 //hier Problem  :clown: 
 CImageList ImageList = ???;

 pTree-&gt;SetImageList(/*&amp;m_ImageList*/NULL, TVSIL_NORMAL);

 TV_INSERTSTRUCT tvinsert;
 tvinsert.hParent	= NULL;
 tvinsert.hInsertAfter = TVI_LAST;
 tvinsert.item.mask = TVIF_IMAGE |    TVIF_SELECTEDIMAGE | TVIF_TEXT;
 tvinsert.item.hItem = NULL;
 tvinsert.item.state = 0;
 tvinsert.item.stateMask = 0;
 tvinsert.item.cchTextMax = 6;
 tvinsert.item.iSelectedImage = 0;
 tvinsert.item.cChildren = 0;
 tvinsert.item.lParam = 0;

 //Arbeitszeiger auf Anfang meiner verketteten Liste setzen
 erunner = eanchor;

 char sz[MAX_PATH];

 //Extensions aus der Liste (Form: .*, z.B .txt, .bmp) in den treeview einfügen
 while(erunner)
 {
  strcpy(sz, erunner-&gt;cExtension);
  tvinsert.item.pszText = sz;  
  //hier Problem  :clown: 
  //tvinsert.item.iImage  = ???;
  pTree-&gt;InsertItem(&amp;tvinsert);

  erunner = erunner-&gt;next;
 }

 //Elemente sortieren
 pTree-&gt;SortChildren(NULL);
</code></pre>
<p>---------------------------------</p>
<p>1000send Dank für Deine Hilfe</p>
<p>Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/84094/treeview-mit-systemicons</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 00:43:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/84094.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 26 Aug 2004 17:57:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to treeview mit systemicons on Thu, 26 Aug 2004 17:57:58 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe einen funktionierenden treeview aber leider ohne Icons. Ich möchte nun keine Eigenen sondern das jewailige Systemicon vor der Datei in meinem treeview anzeigen lassen. Meine Programmierumgebung ist VC++ 6.0.</p>
<p>Wie bekomme ich die Systemicons in meine ImageList und wie bekomme ich den Index auf das richtige Icon zum Dateityp?</p>
<p>Bitte keine Links posten, die meisten kenne ich nach meiner 3tägigen Suche. Ich bin für aussagekräfitgen Quelltext dankbar.</p>
<p>Auszug aus meinem Quelltext:</p>
<pre><code class="language-cpp">//treeview
 CTreeCtrl* pTree = (CTreeCtrl*)GetDlgItem(IDC_TREE);

 //Imagelist mit Systemicons, keine Ahnung wie =)
 //hier Problem  :clown: 
 CImageList ImageList = ???;

 pTree-&gt;SetImageList(/*&amp;m_ImageList*/NULL, TVSIL_NORMAL);

 TV_INSERTSTRUCT tvinsert;
 tvinsert.hParent	= NULL;
 tvinsert.hInsertAfter = TVI_LAST;
 tvinsert.item.mask = TVIF_IMAGE |    TVIF_SELECTEDIMAGE | TVIF_TEXT;
 tvinsert.item.hItem = NULL;
 tvinsert.item.state = 0;
 tvinsert.item.stateMask = 0;
 tvinsert.item.cchTextMax = 6;
 tvinsert.item.iSelectedImage = 0;
 tvinsert.item.cChildren = 0;
 tvinsert.item.lParam = 0;

 //Arbeitszeiger auf Anfang meiner verketteten Liste setzen
 erunner = eanchor;

 char sz[MAX_PATH];

 //Extensions aus der Liste (Form: .*, z.B .txt, .bmp) in den treeview einfügen
 while(erunner)
 {
  strcpy(sz, erunner-&gt;cExtension);
  tvinsert.item.pszText = sz;  
  //hier Problem  :clown: 
  //tvinsert.item.iImage  = ???;
  pTree-&gt;InsertItem(&amp;tvinsert);

  erunner = erunner-&gt;next;
 }

 //Elemente sortieren
 pTree-&gt;SortChildren(NULL);
</code></pre>
<p>---------------------------------</p>
<p>1000send Dank für Deine Hilfe</p>
<p>Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/592306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/592306</guid><dc:creator><![CDATA[ibu]]></dc:creator><pubDate>Thu, 26 Aug 2004 17:57:58 GMT</pubDate></item><item><title><![CDATA[Reply to treeview mit systemicons on Thu, 26 Aug 2004 18:30:08 GMT]]></title><description><![CDATA[<p>du kannst die icons auch manuell adden:</p>
<pre><code class="language-cpp">m_iDateiDocIcon = m_ImageList.Add(AfxGetApp()-&gt;LoadIcon(IDI_DOC));
m_iDateiTxtIcon = m_ImageList.Add(AfxGetApp()-&gt;LoadIcon(IDI_TXT));
</code></pre>
<p>wenn du nur eine bestimmte anzahl/art von dateitypen hast, kannst du das ja ueber die endung selbst hinzufuegen. wie das uebers system geht weiss ich allerdings nicht.</p>
<p>die icons oben muesstest du eben selber rauskopieren.</p>
<p>Esco</p>
]]></description><link>https://www.c-plusplus.net/forum/post/592358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/592358</guid><dc:creator><![CDATA[Esco]]></dc:creator><pubDate>Thu, 26 Aug 2004 18:30:08 GMT</pubDate></item><item><title><![CDATA[Reply to treeview mit systemicons on Thu, 26 Aug 2004 18:31:56 GMT]]></title><description><![CDATA[<p>die standard systemicons befinden sich (unter win xp) in folgender dll:</p>
<p>system32\SHELL32.dll</p>
<p>Esco</p>
]]></description><link>https://www.c-plusplus.net/forum/post/592361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/592361</guid><dc:creator><![CDATA[Esco]]></dc:creator><pubDate>Thu, 26 Aug 2004 18:31:56 GMT</pubDate></item><item><title><![CDATA[Reply to treeview mit systemicons on Thu, 26 Aug 2004 18:40:49 GMT]]></title><description><![CDATA[<p>Hallo Esco,</p>
<p>das mit dem selber Adden kennne ich. Mein Problem ist, daß ich alle möglichen Dateitypen, die ich vorher auch nicht kenne, darstellen muss und das mit dem entsprechendem Icon.</p>
<p>Hat noch jemand einen Vorschlag?</p>
<p>Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/592369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/592369</guid><dc:creator><![CDATA[ibu]]></dc:creator><pubDate>Thu, 26 Aug 2004 18:40:49 GMT</pubDate></item><item><title><![CDATA[Reply to treeview mit systemicons on Thu, 26 Aug 2004 20:20:13 GMT]]></title><description><![CDATA[<p>SHGetFileInfo() liefert ein Handle für das Icon des jeweiligen Dateityps. Kannst Dir auch mal das IExtractIcon Interface anschaun.<br />
[Für ein Icon einer bestimmten (existenten) Datei: ExtractAssociatedIcon()]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/592505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/592505</guid><dc:creator><![CDATA[kwoTx]]></dc:creator><pubDate>Thu, 26 Aug 2004 20:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to treeview mit systemicons on Fri, 27 Aug 2004 06:49:59 GMT]]></title><description><![CDATA[<p>OK, danke das hilft mir schon mal weiter. Nun weiß ich welches Icon aus der Systemiconlist für den jewailigen Typ passt. Trotzdem muss ich meinen treeview noch mit der systemiconlist füttern. Nur wie ich das anstellen soll weiß ich nicht. Hat da jemand einen Tip?</p>
<p>Danke</p>
<p>Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/592709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/592709</guid><dc:creator><![CDATA[ibu]]></dc:creator><pubDate>Fri, 27 Aug 2004 06:49:59 GMT</pubDate></item><item><title><![CDATA[Reply to treeview mit systemicons on Fri, 27 Aug 2004 10:36:08 GMT]]></title><description><![CDATA[<p>Problemlösung (auf meinen Quelltext bezogen):</p>
<p>1. Im Konstruktor Systemiconliste auslesen</p>
<pre><code class="language-cpp">CStepTwo::CStepTwo()
{
 //m_SmallImageList (Typ: CImageList) mit Systemiconliste füttern
 SHFILEINFO FileInfo; 

 m_SmallImageList.Attach( (HIMAGELIST)SHGetFileInfo( &quot;&quot;, 0, &amp;FileInfo, 
                                                     sizeof( FileInfo),
                                                     SHGFI_SMALLICON |
                                                     SHGFI_SYSICONINDEX ));
}
</code></pre>
<p>2. In einer Funktion Iconindex in Systemliste dateitypspezifisch auslesen</p>
<pre><code class="language-cpp">int CStepTwo::IconIndex(CString strExt)
{
 SHFILEINFO info;

 DWORD result = SHGetFileInfo(strExt, 
                               0, 
                               &amp;info, 
                               sizeof(SHFILEINFO), 
                               SHGFI_ICON | 
                               SHGFI_SMALLICON | 
                               SHGFI_DISPLAYNAME | 
                               SHGFI_USEFILEATTRIBUTES 
                               );

 if (result)
	 return info.iIcon;

 else
	 return 0;
}
</code></pre>
<p>3. Alles zusammenfügen und treeview mit den heißersehnten Icons anzeigen</p>
<pre><code class="language-cpp">void CStepTwo::MakeTree()
 {   
  CTreeCtrl* pTree = (CTreeCtrl*)m_pMassDeleterDlg-&gt;GetDlgItem(IDC_TREE);
  pTree-&gt;SetImageList(&amp;m_SmallImageList, TVSIL_NORMAL); 

  TV_INSERTSTRUCT tvinsert;
  tvinsert.hParent	= NULL;
  tvinsert.hInsertAfter = TVI_LAST;
  tvinsert.item.mask = TVIF_IMAGE |   TVIF_SELECTEDIMAGE | TVIF_TEXT;
  tvinsert.item.hItem = NULL;
  tvinsert.item.state = 0;
  tvinsert.item.stateMask = 0;
  tvinsert.item.cchTextMax = 6;
  tvinsert.item.iSelectedImage = 0;
  tvinsert.item.cChildren = 0;
  tvinsert.item.lParam = 0;

  erunner = eanchor;

  char sz[MAX_PATH];

  while(erunner)
  {
   strcpy(sz, erunner-&gt;cExtension);
   tvinsert.item.pszText        = sz; 

   //hier wird der Eintrag getätigt 
   tvinsert.item.iImage         = IconIndex(erunner-&gt;cExtension);
   tvinsert.item.iSelectedImage = IconIndex(erunner-&gt;cExtension);
   pTree-&gt;InsertItem(&amp;tvinsert);
   //Ende Eintrag

   erunner = erunner-&gt;next;
  }

  pTree-&gt;SortChildren(NULL);
 }
</code></pre>
<p>4. Im Destruktor IconList wieder freigeben</p>
<pre><code class="language-cpp">CStepTwo::~CStepTwo()
 {
  m_SmallImageList.Detach();
 }
</code></pre>
<p>So simpel iss das :p .</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <a href="http://www.suckow.biz" rel="nofollow">www.suckow.biz</a> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Danke allen für die Tipps.<br />
Gruß Tobi <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/592961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/592961</guid><dc:creator><![CDATA[ibu]]></dc:creator><pubDate>Fri, 27 Aug 2004 10:36:08 GMT</pubDate></item><item><title><![CDATA[Reply to treeview mit systemicons on Fri, 27 Aug 2004 10:38:13 GMT]]></title><description><![CDATA[<p>@ Admin</p>
<p>Das wär doch auch mal was für die FAQ. Dort befindet sich nur ein unvollständiger Beispielcode für BCB.</p>
<p>Und schick gemacht hab ich das Ganze ja nun auch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/592965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/592965</guid><dc:creator><![CDATA[ibu]]></dc:creator><pubDate>Fri, 27 Aug 2004 10:38:13 GMT</pubDate></item></channel></rss>