Hallo zusammen, wie kann ich mir in MFC aus einem Dialog heraus ein untergeordnetes Fenster anzeigen lassen? Sollte ich dafür immer eine eigene Klasse von CDialog ableiten? Eigentlich geht es mir darum, mit der rechten Maustaste einen kleinen Auswahldialog anzeigen zu lassen. Je nachdem, wo geklickt wird, soll dieser Dialog aber immer komplett anders aussehen. Wenn ich da jetzt jedes Mal eine eigene Klasse ableite, habe ich am Ende 6-7 eigene Klassen. Das fühlt sich irgendwie nicht richtig an. Allein schon, weil es in der Projektmappe unübersichtlich aussieht. Oder wäre das hier das übliche Vorgehen? Weiß jemand Rat? Grüße Steffen
Ja, ich denke, es ist richtig, für jeden Dialog eine eigene Klasse von CDialog abzuleiten, insb. wenn die alle komplett verschieden aussehen sollen. Wenn sich die Unterschiede auf das Aussehen beschränken, aber die Funktionen immer gleich sind, könnte man auch Klassen wiederverwenden und nur mit unterschiedlichen Dialog-Ressourcen arbeiten.
Ok, dann werde ich das auch so machen. Vielen Dank für Deine Antwort!
Steffen H. schrieb: > habe ich am Ende 6-7 eigene > Klassen. Du kannst ja alles vorsehen und aktuell nur anzeigen was im Kontext sinnvoll ist. Dazu eigene abgeleitete Klassen zu erzeugen könnte ins Chaos führen, wenn es zu viele Kombinationen gibt, ich würde einfach jedesmal eine Liste erstellen was gerade benötigt wird und das im Menü anzeigen. Das gibt ev. eine Mischform, Klassen für ähnliche Menüs, die aber vor der Anzeige noch geeignet modifiziert werden. Georg
So als Beispiel: wenn du Objekte hast, die einen Preis haben, aber nicht müssen, würde ich keine Klasse mit und ohne "Preis ändern" erzeugen, sondern den Menüpunkt einfach ein- oder ausschalten. Dem Objekt muss man natürlich entnehmen können ob es einen Preis hat. Oder das Objekt ist Lagerware oder nicht. Wenn nicht gibt es auch keinen Lagerbestand den man ändern könnte. Georg
Steffen H. schrieb: > Eigentlich geht es mir darum, mit der rechten Maustaste einen kleinen > Auswahldialog anzeigen zu lassen. Tatsächlich einen Dialog? Üblich, d.h. konform zu den selten beachteten "Human interface guidelines"* von Microsoft ist hier ein Popup-Menü. *) eines der am seltensten gelesenen Werke der Weltliteratur.
Rufus Τ. F. schrieb: > Tatsächlich einen Dialog? Ja, gute Frage. In einem Popup trifft man üblicherweise nur eine Auswahl (ein/aus). Ich brauche mehrere Checkboxen. Deshalb ist es ein Dialog geworden. georg schrieb: > Du kannst ja alles vorsehen und aktuell nur anzeigen was im Kontext > sinnvoll ist. Genau so habe ich es jetzt gemacht! Danke für Eure Antworten Steffen
Wie bekommt der Benutzer der Anwendung mit, daß er irgendwo mit der rechten Maustaste draufklicken muss, um eine Auswahlliste angezeigt zu bekommen?
Rufus Τ. F. schrieb: > Wie bekommt der Benutzer der Anwendung mit, daß er irgendwo mit der > rechten Maustaste draufklicken muss Das nimmt man heute als selbstverständlich an - ich habe gerade mal ein paar Stunden mit Windows 3.11 gearbeitet, da war ich immer wieder frustriert dass da z.B. im Dateimanager keine Reaktion auf die rechte Maustaste kam. Aber das geht halt schon automatisch, Datei anklicken, rechte Maustaste, Eigenschaften, auch wenn man weiss dass das mit uraltem Windows nicht geht. Georg
Gewiss, aber in einem Dialog einen Rechtsklick auf ein Dialogelement auszuführen, ist nochmal etwas anderes, als in einem explorer-artigen Fenster auf irgendwas draufzuklicken. Rechtsklick auf Dialogelemente ist nach wie vor unüblich. Steffen, was genau für Dinge sind das in Deinem Ausgangsdialog, auf die da ein Benutzer Rechtsklicks machen soll, und welcher Art sollen die dann erscheinenden "Auswahldialoge" sein? Welcher Art sind die auszuwählenden Informationen, und was von ihnen wird im Ausgangsdialog angezeigt? (Ich mach' das mit der Windows-Entwicklung auch schon seit ein paar Jährchen und habe sogar mal in das von mir angesprochene ungelesenste Werk der Weltliteratur reingesehen, wenngleich das auch schon 'ne Weile her ist)
Steffen H. schrieb: > Ja, gute Frage. In einem Popup trifft man üblicherweise nur eine Auswahl > (ein/aus). Ich brauche mehrere Checkboxen. Deshalb ist es ein Dialog > geworden. Im Popupmenü kann haben die Einträge doch das Property Checked. Damit hat man im Prinzip eine CheckBox. Im gesetzten Zustand wird dann vor dem Eintrag ein Häckchen angezeigt. Wenn man zusätzlich noch das Property RadioItem setzt wird an Stelle des Häckens ein Punkt gezeigt. Zusätzlich gibt es noch die Eigenschaft GroupIndex, womit man das Ganze auch noch zu Gruppen zusammenfassen kann. Damit hat eigentlich jede Menge Möglichkeiten. Delphi und Lazarus können das schon seit ewigen Zeiten.Gibt es so etwas bei MFC nicht?
Zeno schrieb: > Gibt es so etwas bei MFC nicht? Natürlich; das ist Grundfunktionalität von Windows selbst und kann auch mit der Win32-API ohne MFC erledigt werden, wenn es denn sein muss. Der Nachteil der Lösung ist halt, daß man, um mehrere Häkchen (ohne "ck", es sind kleine Haken und keine kleinen Hacken) zu setzen, das Kontextmenü für jedes einzelne Häkchen erneut aufmachen muss. Und so etwas ist eine schlechte GUI.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.