ListBox füllen
-
Habe schon Google und die MSDN (sowohl lokal als auch online) durchsucht, aber nicht wirklich was gefunden. Zudem habe ich irgendwie das Gefühl, dass ich mich leicht verrannt habe und blicke jetzt überhaupt nicht mehr durch.
Ich habe eine Dialogfeldressource, nennen wir sie IDD_MAIN. In dieser Dialogfeldressource gibt es einige Buttons und ein ListBox-Feld (nix ComboBox, nix ListView) mit der Nummer IDC_MYLIST. Wenn auf einen bestimmten Button geklickt wird, soll die Anwendung aus einer Datei Datensätze auslesen und jedem Datensatz einen eindeutigen Bezeichner (in Form eines Namens in Stringform - z.B. "Tom" oder "Elena") zuweisen. Diese Bezeichner sollen dann in der ListBox als Elemente anwählbar sein, sodass der User mit dem ausgewählten Datensatz arbeiten kann.
Nachrichtenbehandlung klappt, er findet, ließt und überprüft die Datei, aber ich kann dem ListBox-Element keine neuen Elemente zu fressen geben. Kann sein, dass ich von C# verwöhnt bin, wo ich mit der Funktion
AddItemeinfach ein neues Element erstellen kann ... jedenfalls kann ich in C nicht mir nichts, dir nichts ein Klassenobjekt zur Repräsentation des Objektes verwenden (nicht, dass ich es versucht hätte).Allerdings bin ich beim Durchblättern der MSDN auf die
ListView_*-Funktionen gestoßen, die mir (trotz der Zeile, dass sie eben für ListView-Elemente sei) doch irgendwie hilfreich sein könnte. Aber bevor ich irgendeine Scheiße baue, bei der ich zwei Stunden brauche, um es irgendwie gebacken zu kriegen, frage ich lieber hier kurz und bündig nach, wie ich mein Ziel erreichen kann.PS: Nur für den Fall, dass jemand fragt ... ich weiß sehr wohl, dass ich mit
HWND GetDlgItem(HWND,int)ein Handle auf die ListBox bekomme. Ich kenne nur einfach keine Funktion, die mir neue Elemente hinzufügt. Oder ist mein Ansatz ganz falsch?
-
LB_ADDSTRING Message?!
-
tldr schrieb:
LB_ADDSTRING Message?!
Siehst du, da beginnt es schon ... was meinst du mit LB_ADDSTRING-Message? Wie soll mir das weiterhelfen?
Oder meinst du etwa, ich soll mit
SendMessagediese Nachricht verschicken?
-
Genau das meint er.
Warum liest Diu nicht einfach die MSDN. LB_ADDSTRING befindet sich im Abschnitt Messages. Zusätzlich werden wParam und lParam beschriebn (die zwei zusätzlichen Parameter von SendMessage.
Weiterhin könntest Du einfach auf der linken Seite im Kontext auf "List Box Control Overviews" gehen und dort auf "Using List Boxes".
Was findest Du? Einen kompletten Samplecode.
-
Mit
ListBox_AddString()oderListBox_InsertString()würde es auch gehen.
-
Generell wennn ich für ein WINAPI Control eine bestimme Message suche, schaue ich erstmal in der Übersicht für alle Controls nach, welche Messages es denn überhaupt gibt. Dann sind dort noch jede Menge Erklärungen und Beispielcode. Das hilft mir in 90% aller Fälle weiter.

Link: http://msdn.microsoft.com/en-us/library/bb773169%28v=VS.85%29.aspx
-
Manchmal bin ich einfach nur blöde ... ich verstehe nur nicht, warum man diesen
SendMessage()-Kram keine eigene Funktion oder zumindest ein einfach zu steuerndes Makro definiert hat.Egal, funzt aber. Vielen Dank für den Anstupser, habe nur
SendMessagegelesen und sofort ausprobiert.
-
Glühbirne schrieb:
ich verstehe nur nicht, warum man diesen
SendMessage()-Kram keine eigene Funktion oder zumindest ein einfach zu steuerndes Makro definiert hat.Wer sagt das? Hättest du meine letze Antwort gelesen, hättest du genau diese Funktionen, die eigentlich Makros sind, gesehen.
-
[Rewind] schrieb:
Wer sagt das? Hättest du meine letze Antwort gelesen, hättest du genau diese Funktionen, die eigentlich Makros sind, gesehen.
IntelliSense zeigt mir aber nur ListView_* an ...
Egal, es funktioniert.
-
Für ListView controls gibt es eine äquivalente Funktion (Makro):
ListView_InsertItem(). Aber wenn's schon mal funktioniert...