ListBox
-
Vielleicht weil das von MS so gewünscht war ?
-
Weil du's nicht über eine Wert-Variable machst denk ich mal.

-
ich hab nen tutorial geselesen, da stand extra drinn, dass man das mit UpdateData machen muss...
-
BOOL CLstbox::OnInitDialog() { int index ; m_list.AddString("Mathematik"); m_list.AddString("Physik"); m_list.AddString("Informatik"); m_list.AddString("Chemie"); m_list.SelectString(index,"Chemie"); m_list_show="Chemie"; UpdateData(FALSE); return TRUE ; // return TRUE unless you set the focus to a control }für was brauch ich int index? was macht SelectString() und was soll m_list_show="" sein? das geht bei mir nicht...
-
Dann ist das TUT SCH.....
Wenn du Fragern zu Memberfunktionen hast dann schau zuerst in der MSDN nach.
Und m_list_show ist vermutlich eine Membervariable eines Controls wo man dann auch UpdateData() braucht. Aber da ich kein Hellseher bin kann ich das auch nicht wissen
-
warum so unfreundlich? ich hab ganz normal gefragt...
und m_list_show is keine member variable, der sagt auch, dass das ein nicht deklarierter Bezeichner ist...
-
ich denke mal du hast im Tutorial die Stelle verpaßt wo die ListBox an eine Membervariable CString "gebunden" wurde. Dann macht nämlich das
m_list_show="Chemie; UpdataData(false);Sinn: die aktuelle auswahl steht in m_list_show.
(Hätte den Vorteil das das Tutorial nicht ganz so SCH ist...
)Das SelectString macht aber an der Stelle keinen Sinn - siehe MSDN: Sucht ab index nach dem ersten eintrag der mit "Chemie" beginnt und selektiert diesen...
-
ich hab den beispiel code 1:1 übernommen, und sonst auch alles so gemacht, was da stand. Für mich sieht m_list_show wie eine eigene variable aus, die ich nich deklariert habe. auch sehe ich keinen sinn, was das bringen soll, wenn ich der einen string zuordne...
-
da seh ich ja grad, dass das SelectString ja sowieso schwachsinn ist, da ja index noch überhaupt keinen wert hat...
oh, geht trotzdem, fängt anscheinend bei 0 an, wenn index nicht initialisiert ist...
-
oh, geht trotzdem, fängt anscheinend bei 0 an, wenn index nicht initialisiert ist...
Aua Aua Aua
Nicht initialisiert: im Debug Build mit "definiertem Müll", im Release Build mit "irgendwas". Das kann wirklich "Irgendwas" sein.
Mal so ein paar Hintergrundinfos, bzgl. des UpdateData und DDX:
Im Prinzip ist UpdateData nicht nötig. Alle Operationen wie "Text in Edit-Feld setzen", "Listenelement auswählen", "Checkbox abfragen" usw. können "direkt" gemacht werden. So läuft's in der Win32 API, und die MFC-Klassen bieten auch entsprechende, nette Memberfunktionen.
DDX ("Dialog Data Exchange") erlaubt auf relativ simple Weise, Datenmember (CString, int,....) an bestimmte Controls (Edit, Checkbox, ...) zu binden. Da passiert nicht viel - UpdateData(false) schreibt die Informationen aus den Datenmemmbern in die Controls, UpdateData(true) holt die Info aus den Controls in die Datenmember.
Intern fügt der Wizard (oder der clevere Programmierer) DDX_xxxx - Aufrufe zur virtuellen DoDataExchange-Methode hinzu, die von UpdateData genutzt wird.Nach meienr Efahrung ist UpdateData(true/false) recht sinnvoll für einfache Eingabemasken (Daten reinhacken und OK clicken), versagt aber recht schnell bei komplexeren Dialogen.
-
ok, habich verstanden, und das mit der nicht initialisierten variale habich ja ned programmiert, das stande so im tutorial...