DlgDirList
-
Hi,
mit DlgDirList
http://msdn.microsoft.com/en-us/library/bb761366(v=VS.85).aspx
kann ich ja eine Listbox mit meinen Dateien Ordnern usw "füllen".Ich würde nun gerne eine Listbox füllen, die aber nicht auf
einer DlgBox sondern auf meinem Hauptfenster steht..DlgDirList( __in HWND hDlg, /* <--- WAS DA HIN? */ __inout LPTSTR lpPathSpec, __in int nIDListBox, /* <--- WAS DA HIN? */ __in int nIDStaticPath, /* <--- WAS DA HIN? */ __in UINT uFileType );Oder gibts da eine gänzlich bessere Methode?
Besten Dank jetzt schonmal

-
Doku lesen:
http://msdn.microsoft.com/en-us/library/bb761366(v=VS.85).aspx
hDlg darf auch das Parent Window sein.
nIDListBox ist die ID Deiner ListBox,
nIDStaticPath darf 0 sein.Doku einfach weiterlesen und Du kommst auf:
DlgDirList sends the LB_RESETCONTENT and LB_DIR messages to the list box.
http://msdn.microsoft.com/en-us/library/bb775185(v=VS.85).aspx
-
Hmja, wie bekomme ich denn die ID meiner Listbox?^^
Vielleicht ist das ja eine doofe Frage aber mir
fällt da gerade nichts ein..
-
Ah ok, ich kann die (HMENU) ID benutzen

Hätte da aber gleich noch ne Frage:
Kann ich einzelne Zeilen färben?
-
namenamename schrieb:
Kann ich einzelne Zeilen färben?
Nur mit Ownerdraw...
-
hm..
// Erstellen... hControl = CreateWindowEx(...,WS_VISIBLE|WS_CHILD|LBS_HASSTRINGS|LBS_OWNERDRAWFIXED,...); // Dann WM_DRAWITEM im Eltern-Fenster abfangen // in lParam verstecken sich die Infos über das was gezeichnet werden soll und zwar in Form von DRAWITEMSTRUCT case WM_DRAWITEM: { DRAWITEMSTRUCT *dis = (DRAWITEMSTRUCT*)lp; if( dis->hwndItem == hControl ) { // Prüfen welche Listbox gezeichnet wird COLORREF bgColor; // Falls Eintrag selektiert dann roter Hintergrund, sonst grün if( dis->itemState & ODS_SELECTED ) bgColor = RGB(255,0,0); else bgColor = RGB(0,255,0); // Rechteck für Hintergrund zeichnen HBRUSH hbr = CreateSolidBrush(bgColor); FillRect(dis->hDC,&dis->rcItem,hbr); DeleteObject(hbr); // Den Text des Items nehmen und mit Textout darstellen char buf[100]; SendMessage(hControl,LB_GETTEXT,dis->itemID,(long)buf); SetBkColor(dis->hDC,bgColor); TextOut(dis->hDC, dis->rcItem.left, dis->rcItem.top, buf, strlen(buf)); } return 0; };Das hab ich hier im Forum gefunden, da ich alle Dateien mit einer bestimmten Endung (zB. .txt) färben möchte, wäre das aber ein ziemliches geraffel..
Gibts ne möglichkeit einen Treeview oder sowas ähnlich DlgDirList()
zu füttern? Oder noch was besseres?Falls nicht, werd ich wohl die ownerdraw Technik benutzen müssen..
Besten Dank trotzdem schonmal
