MFC-Basics
-
Hallo zusammen, ich hab ein paar ganz einfache Fragen zu MFC. Aber obwohl ich schon sehr viel Seiten und auch die hier empfohlenen Tutorials durchgesucht habe, finde ich die Antworten nicht. Kann mir vielleicht jemand von euch sagen, was die genaue Bedeutung der Funktionen DoDataExchange(), OnInitDialog(), OnButtonAdd(), OnButtonRemove() und OnSelchangeList() ist? Ihr würdet mir damit wirklich sehr helfen!
-
Hi Apfelbaum,
bin zwar auch noch nicht lang Mitglied der MFC-Gemeinde, aber ein paar Dinge kann ich dir sagen:DoDataExchange()
Wird beim beenden eines Dialogs ausgeführt
Sorgt dafür, dass deine Daten, die du in einem Dialog (z.B.: in einer Edit-Box) aufgenommen hast, in die zugehörigen Membervariablen geschrieben werden.
Das funzt aber nicht unbedingt bei allen Tools aus der Toolbox.OnInitDialog()
Wird beim Aufrufen eines Dialogs ausgeführt
Dort kannst du Tools eines Dialogs initialisieren, also z.B.: Wertebereich bei einem Schieberegler angeben und so.OnButtonAdd() OnButtonRemove()
dem Name nach würd ich kühn behaupten, dass sie einen Button adden und removen, hab ich aber noch nicht gebraúcht. Bedenke: Es gibt wie bei Microsoft üblich immer mehrere Wege zum Ziel. Du kannst alle Tools in einem Dialog aus in der OnInitDialog() per Code adden, oder aber du gestaltest deinen Dialog über den Dialogeditor.OnSelchangeList()
Bin mir nimmer ganz sicher, ist aber glaub ich zum Datenausstausch einer Liste. Dieses kann ja je nach Auswahl verschiedene Daten in die Value-Membervariable zurückgeben. Gesteuert wird dies über die Control-Membervariable, zu deren klasse glaub ich auch die OnSelChange() gehört.Gruß Squeegee
-
Netter Versuch S, aber leider nicht ganz getroffen.
DoDataExchange()
ist die Funktion, die Daten zwischen den Controls und den zugehörigen Wertemembern austauscht. Du kannst sie nicht direkt aufrufen, aber mit UpdateData.
UpdateData wird von CDialog::OnInitDialog und CDialog::OnOK automatisch aufgerufen.So, zu den anderen ganz allgemein:
On... zeigt, dass es sich um einen MessageHandler handelt. Der Rest des Funktionsnamens lässt auf die Nachricht schließen.OnInitDialog hat S richtig beschrieben.
OnSelchangeList
heißt, dass in List (das Ding scheinst du List genannt zu haben) ein anderer Eintrag als vorher gewählt wurde.OnButton... heißt, dass diese Funktion ausgeführt wird, wenn du auf den betroffenen Button geklickt hast.
Mit ein wenig Englisch und etwas Nachdenken hättest du aber auch darauf kommen können.
-
@estartu_de:
Hmm, also laut meinem Skript wird DoDataExchange beim Beenden eines Dialogs ausgeführt, du beschreibst sie doch genauso, wie ich sie auch beschrieben habe?!?OnSelchangeList:
Auch hier beschreibst du dasselbe wie ich?!? Ein anderer Eintrag in einer Liste (List Box). Hab das grade nochmal getestet, ist so wie ich es beschrieben habe.Nur bei den On...Methoden lag ich falsch, hab aber auch gesagt, dass ich das nur behaupte und mir net sicher bin.
Warum also der Sarkasmus?
Gruß Squeegee
-
Du hast aber einen Teil weggelassen.
Denn man kann es nach Bedarf aufrufen. Und es wird für BEIDE Richtungen benutzt.
Daher auch der Hinweis auf OnInitDialog.Bei der Liste hast du aber was falsches geschrieben. Das Selchange hat nichts mit dem Datenaustausch zu tun. Es ist nur ein guter Zeitpunkt, wenn man den durchführen will.
Der Datenaustausch ist weiterhin DoDataExchange, was man über UpdateData aufrufen kann.
Und dazu braucht man keine Control-Membervariable. Das geht auch ohne.Außerdem sollte das nicht sarkastisch sein.
So unsicher wie du es beschrieben hast, war es ein Versuch - oder sehe ich das falsch? Und es war nicht alles falsch, nur ein Teil.
Sorry, falls du dich angegriffen gefühlt hast.
-
Hi estartu_de,
Das ich einen Teil weggelassen hab, damit hast allerdings recht...
Wie gesagt, bin ja auch noch relativer Neuling und kann mich mit Apfelbaums Problemen recht gut identifizierenHabs jetzt allerdings in Foren schon öfter erlebt, dass Anfänger ganz schön von oben herab behandelt werden. Dabei bieten genau denen Foren ja die Möglichkeit, einfache Fragen nicht einen halben Tag in einem Buch nachzulesen, bis man die Lösung gefunden hat, sondern schnell beantwortet zu bekommen.
Deswegen mein Kommentar dazu, hab ich vielleicht auch etwas überreagiert, sorry
Gruß Squeegee
-
Na, das mit dem "von oben herab" kommt hier auch schon mal vor.
Aber normalerweise hat das eine Vorgeschichte. Oder die Frage war so doof gestellt, dass man sich das trollen nicht verkneifen kann.Beides war hier nicht der Fall.
Daher hoffe ich, dass du einfach nur "Gespenster" gesehen hast.Sind deinerseits jetzt alle Unsicherheiten beseitigt?
-
Alles klar,
kein Problem, deswegen redet man ja drüberGrüße Squeegee
PS.: Ich hoffe, dass Apfelbaum seine Probleme auch gelöst sind, darum gings ja letztendlich.