combobox mit default-wert?

fwk

Grünschnabel
wie und vor allem wo kann ich einer combobox (Dropdown-Listenfeld) sagen, welchen Wert sie per anfänglich (also bevor der Benutzer etwas ändert) anzeigen soll?

(suche schon seit zwei Tagen und habe irgendwie das Gefühl "das kann doch nicht so schwer sein!"...
 
Wenn Du die ComboBox als Ctrl einer Variable zugewiesen hast (am besten über den Assi via Strg+W) machst Du einfach folgendes:

C++:
m_ComboControl.SetCurSel(0); //erster Auswahlpunkt, alternativ natürlich jeder andere wählbar
 
Zuletzt bearbeitet von einem Moderator:
Hi,
zunächst erstmal in der Liste die Daten zufügen, die angezeigt werden sollen. Wenn diese Daten schon beim Entwurf feststehen, kannst du sie im Eigenschaftsfenster eingeben. Abhängig, welches VS du benutzt, erfolgt die Trennung entweder durch einSemikolon oder - hmm, war's nun Ctrl Enter oder Shift Enter? - habe lange nicht mehr mit älteren Versionen gearbeitet.
Willst du die Daten zur Laufzeit hinzufügen, dann eine Control-Variable anlegen und vor dem Anzeigen der ComboBox die Daten mit
Code:
m_ComboCtl.AddString(meinString);
hinzufügen. Bei einem Dialog in OnInitDialog, in einer SDI-Anwendung am Besten in InitInstance. Das anzuzeigende Item - siehe Antwort von sTek.

Mfg

langer
 
erst mal schönen dank für eure schnelle hilfe - hab' aber probleme, die m_ComboControl.SetCurSel(0); schlau zu positionieren:

- meine Dialog-Klasse hat keine OnInitDialog() (müsste ich die von CDialog von Hand überschreiben), deshalb habe ich den Funktionsaufruf versuchsweise in den "OnMenuafruf..." der ...Doc-Klasse geschrieben - das wird zwar kompiliert, verursacht aber einen Programmabbruch mit wüstem Fehler, wenn ich den Dialog zur Laufzeit übers Menu öffnen will.

- könnte ich den Funktionsaufruf alternativ auch im Konstruktor der Dialogklasse machen?
 
- meine Dialog-Klasse hat keine OnInitDialog() (müsste ich die von CDialog von Hand überschreiben)
OnInitDialog() ist schon die beste Stelle. Füge bei deiner Dialogklasse einfach mit dem Klassenassistenten einen Message-Handler für WM_INITDIALOG hinzu und schon hast du diese Funktion.

- könnte ich den Funktionsaufruf alternativ auch im Konstruktor der Dialogklasse machen?
Das geht nicht, weil zu dem Zeitpunkt die ComboBox noch nicht existiert. Das gibt einen Absturz zur Laufzeit.

Gruß
MCoder
 
ja, den absturz zur laufzeit hatte ich bereits ;-)

wie mache ich den message-handler mit dem assistenten? in den Eigenschaften der Dialogklasse finde ich unter <Meldungen> so ziemlich alles an WM_... ausser WM_INITDIALOG...?
 
Wenn du VS 6 hast, ist die letzte Karteikarte des Klassenassistenten "Klassen-Info". Dort sollte der "Filter für Nachrichten" auf Dialog stehen. Wo eine entsprechende Einstellung bei VS 2003 bzw. VS 2005 zu finden wäre, weiss ich im Moment allerdings nicht, da könnte ich erst am Montag nachschauen.

Gruß
MCoder
 
Hallo,

das ist beim neuen Visual Studio leider etwas tricky :)

die Klassenansicht muss geöffnet und sichtbar sein ("automatisch im Hintergrund" ggf. abschalten). Dort stellst du dich dann auf deine Dialogklasse. Dann das Eigenschaftsfenster öffnen. Dort erscheint dann ein neuer Button mit dem Tooltip "Überschreibungen". Hier findest du dann "OnInitDialog".

Gruß
MCoder
 
Zurück