[C/C++] Mit WinApi anständige Listbox mit "Reiter" erstellen

STaRDoGGCHaMP

Grünschnabel
Hallo Community,

Ich habe vor längerer Zeit eine Funktion geschrieben, die die komplette Festplatte nach Dateien durchsucht (also einfach ein kleines Such-tool). Allerdings habe ich es damals in form einer Konsolenanwendung gemacht. Jetzt habe ich mir vorgenommen, dies mittels der WinApi in Form einer schönen und sauberen Windows-Applikation zu realisieren. Dafür würde ich gerne auf das Listbox-Control zurückgreifen, das in etwa so ähnlich aussieht, wie jenes, welches bei der Windows-Suche verwendet wird.

http://img402.imageshack.us/img402/580/goodlistboxgr8.gif

Wenn ich jedoch eine Listbox mit CreateWindowEx() erstelle sieht das eher so aus.

http://img517.imageshack.us/img517/6452/badlistboxma8.gif

Nun zu meinen Fragen:
1. Wie kriegt man bei den Listboxen oben diese "Reiter" hin. (Hier bei der Windows-Suche sind das "Name" und "Im Ordner".

2. Handelt es sich bei der Windows Suche überhaupt um Listboxen. Wenn ja, sind es hier zwei verschiedene Listboxen. Wenn wieder ja, wie kriegt man es hin, dass diese beiden Listboxen miteinander verbunden sind?
 
Das ist dann keine ListBox, sondern eine ListControl. Das sind zwei unterschiedliche Controls. Bei der ListControl aktivierst du die Report-Ansicht, dann hast du oben diese Reiter.
 
Ok, danke, jetzt noch ne frage, ich hab das jetzt alles relativ leicht mit dem ListView-Control gelöst, und die Suche funktioniert auch, aber eine Frage hätte ich da noch.

Ich benutze ein Static Control um bei jedem Suchdurchgang das aktuelle Verzeichnis, welches durchsucht wird, anzugeben. Wenn der Pfad nun zu lang ist, wird der überstehende Text einfach abgeschnitten und nicht dargestellt. Gibt es irgendeine Option bei einem Static Control welches den Text autmotatisch so mit Zeilenumbrüchen versehen würde, dass er in das Static Control passen würde?
 
Zuletzt bearbeitet:
Prüf mal, ob SS_LEFTNOWORDWRAP gesetzt ist. Wenn ja, den rausnehmen und durch SS_LEFT ersetzen (Das sind Static Style Defines).
 
Prüf mal, ob SS_LEFTNOWORDWRAP gesetzt ist. Wenn ja, den rausnehmen und durch SS_LEFT ersetzen (Das sind Static Style Defines).

Hallo Endurion,
Danke für deine Antwort, aber das habe ich selbstverständlich schon ausprobiert.

http://msdn2.microsoft.com/en-us/library/ms651156.aspx hat gesagt.:
SS_LEFT:
Specifies a simple rectangle and left-aligns the text in the rectangle. The text is formatted before it is displayed. Words that extend past the end of a line are automatically wrapped to the beginning of the next left-aligned line. Words that are longer than the width of the control are truncated.

Leider nichts für mein Problem
 
Schweinerei, in meiner MSDN-Version fehlt dieser Satz :)

Aber blöde Frage, was soll die Static denn mit dem Wort machen? Trennen kann es das ja nicht ohne Grammatikparser. Einfach umbrechen?

Ich glaube, du wirst da fast auf Eigenbau hinzielen müssen. DrawText hat da ein DT_WORDBREAK Flag, das würde das machen.
 
Zurück