CFormView und Member-Controls: Hilfeee!
-
Hallo,
ich kenn ja nun die MFC schon seit einigen Jahren und behersche Doument/View SDI/MDI sowohl als auch Dialog-based Anwendungen.
Nun verzweifle ich aber bei dem Versuch Controls in FormViews anzusprechen.
Konkret geht es darum die Elemente einer ComboBox zu erstellen.
(muss dynamisch sein)Also:
Ich hab die Form-Resource. Diese ist einer FormView zugeordnet.
(wurde alles vom Wizard erstellt, dort hab ich CFormView als Basisklasse meiner View gewählt).
Nun platzier ich eine ComboBox drauf.
Danach wie üblich eine Membervariable über den ClassWizard erstellt.
Aber als Control, alsoclass CMyformView : public CFormView { ... CComboBox m_combo; ... };So jetzt möcht ich irgendwo Strings zur Combo hinzufügen, also
m_combo.AddString("Blabla");
bloß wo??
in CMyformView::OnInitialUpdate hat es keinen Effekt.
Hab noch diverse andere Sachen ausprobiert, bin aber zu keinem Ergebnis gekommen.
Was muss ich machen um die Strings in der Combo zu sehen?
-
Ist die Variable wirklich mit der Combobox verbunden?
Hast du die Combobox schon mal aufgeklappt?Wenn du dir so sicher bist, dass alles okay ist, stell das Projekt mal irgendwo online, dann kann man gucken. Oder wenigstens das cpp von View.
-
Du suchst soetwas wie eine InitDialog Funktion, richtig?
Dafür solltest du CView::OnInitialUpdate verwenden.Grüße Rapha
-
Er schreibt doch, das er das schon versucht hat, Rapha.
-
Ich habs extra auch versucht und da hats geklappt

-
Rapha schrieb:
Du suchst soetwas wie eine InitDialog Funktion, richtig?
Dafür solltest du CView::OnInitialUpdate verwenden.Richtig. Hab ich so gemacht. Funzt aber net.
@all:
Beispielprojekt kann ich hier grad nicht online stellen (aber mailen wenn es jemand haben möchte).
Aber das ist auch in weniger als 1 Minute selbst schnell gemacht:- Neuen Workspace (MFC AppWizard exe) "MyForm" erstellen
mit allen Standardeinstellungen,
lediglich beim letzten Fenster: Base View Class: CFormView ausgewählt.
- auf die Form-Resource IDD_MYFORM_FORM eine Combobox platziert (IDC_COMBO1)
- Class Wizard -> Member Variables von CMyFormView -> auf IDC_COMBO1 -> Add Variable: m_combo1, Category: Control, Typ: CComboBox.
- dann in CMyFormView zweimal Addstring hinzugefügt:void CMyFormView::OnInitialUpdate() { CFormView::OnInitialUpdate(); ResizeParentToFit(); m_combo1.AddString("Bla"); m_combo1.AddString("Blub"); }=> Combo bleibt leer.

zieh ich die AddStrings *vor* CFormView::OnInitialUpdate(); haut's ne Assertion.
wohin damit??
-
Achja,
wenn du Strings mit AddString hinzufügst, werden sie in der Liste eingefügt, die du öffnen kannst, wenn du auf den Pfeil klickst.
Den aktuellen Inhalt der ComboBox kannst du entweder mit SetDlgItemText(IDC_COMBOBOX, "Inhalt") ändern, oder du verwendest CComboBox::SelectString (bei dieser Lösung, musst du den String aber vorher mit AddString hinzugefügt haben).Grüße Rapha
-
Ich habs vorher schon ausprobiert und da hats (wie schon gesagt) super funktioniert.
void CMyFormView::OnInitialUpdate() { CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); m_Combo.AddString("Hallo"); }Grüße Rapha
-

Also bei mir funzt nicht!
Die Strings sind eben auch *nicht* in der Liste zum Auflappen!könntest du/ihr mir evtl eine Mail schreiben mit euren Mailadressen, so dass ich euch das Beispielprojekt mailen kann?
Meine Mail-Adresse gibts über das User Profil.
-
scrontch schrieb:
Meine Mail-Adresse gibts über das User Profil.
Nein, man kann dir nur ne mail schicken, aber deine mailadresse ist nicht sichtbar

-
Hab mein "Beispielprojekt" hochgeladen:
http://mitglied.lycos.de/rame03/files.htm (Form.zip)Grüße Rapha
-
Ok, ich bin ein Idiot.
Die Combo war schlicht zu klein dimensioniert damit die Strings sichtbar waren.
Da fall ich immer wieder drauf rein, dass man die Combos da gross hinmalen muss, obwohl sie dann nachher doch nur eine Zeile hoch dargestellt werden (eingeklappt).
Sorry.
BTW: wie ändert man die Grösse nachträglich? man kann das Teil nicht mehr vertikal aufziehen.
-
scrontch schrieb:
wie ändert man die Grösse nachträglich? man kann das Teil nicht mehr vertikal aufziehen.
Ka, ob das geht
Notfalls die .rc datei von Hand bearbeiten.Grüße Rapha
-
Quatsch!!!!!
Klick im RC-Editor mal auf den Pfeil, als wenn du die aufklappen willst. Dann geht das auch.
-
Ach, er hat die Liste gemeint, nicht die ComboBox

-
Haha, jau !
DAS kenn ich auch *ggg* hab da auch ewig dran gesessen, bis ich irgendwann festgestellt habe das wenn man einmal auf den File im Ress-Editor klickt sich dann plötzlich die grösse des "popups" ändern lässt

-
Fein. Bin nun wunschlos glücklich.
Danke an alle Beteiligten.
