Dialog mit Menu
-
Hallo, habe eine dialogbasierte Anwendung und möchte gerne zusätzlich ein Menu in der Titelleiste haben. Wie mach ich das? :xmas1:
Wäre nett, falls mir jemand helfen könnte. Danke!
-
reicht es eventuell, wenn ich weitere Menupunkte zu dem bestehenden Minimalmenu hinzufüg? und wenn ja wie erweitere ich das menu nach rechts?...
-
Erzeuge einfach ein neues Menü im Ressource-Editor und füge die ID der Menü-Ressource zu Deinem Dialog.
Allerdings hast Du damit noch kein automatisches Handling der Update Command Handler. Man kann das hinzufügen allerdings halte ich nicht viel davon, weil es einiges an Code-Ergänzungen kostet.
Der bessere Weg ist es immer eine SDI Anwednung mit CFormView zu erzeugen! Die SDI Anwednung bringt alles mit, was Du einem CDialog erst beibringen musst.
-
ausser copy & paste in dialog elementen der FormView {o;
-
Vielen Danke für den Hinweis! Ich habe es mal mir einer SDI-Anwendung probiert, aber nicht ganz verstanden, wie ich damit arbeiten soll.
Da ging alles automatisch. z.B. auch der Aufruf eines FileAuswahldialogs bei "save"- man kann da rein gar nichts einstellen - anders als ich es kenne.Normal ruft man den Filedialog auf, wenn man ein File selektieren will und dem Dialog kann man dann diverse Endungen vorgeben u.s.w.. All das scheint bei einer SDI-Anwendung nicht möglich...Kann man denn (eigene) überhaupt Dialoge in SDI-Anwendungen einsetzen? und das nur ohne Drag&Drop?!? Dauert wahrscheinlich länger, bis man da durchblickt, oder?
-
wenn du ein SDI auf formview basis erstellst, hast du auch deinen dialog editor - kein problem
einfach beim erstellen der SDI darauf achten das du von CFormView ableiten laesst
-
OK - probier ich mal aus. Wie steht's denn mit den anderen Probleme, die mir entgegebgesprungen sind (z.B.: überladene Operatoren << und >>. Wenn ich von CFormView ableiten, kann ich die dann wieder normal einsetzen, ohne Überladung? Und die anderen Automatismen, wie bei Save oder Load? Sind die dann auch weg? Ich würde nämlich gerne meine guten alten Dialoge weiter benutzen - insbesondere die Filedialoge...
-
Was für Probleme sind Dir mit der Überladung von Operatoren entgegen gesprungen?
Operatoren werden Objekt spezifisch überladen. Du müsstest schon etwas spetzfischer sein, damit man Dir antworten kann.
-
also, ich bisher nur mal eine SDI-Anwendung vom assistenten aufsetzen lassen und bin dabei auf die Methode
...::Serialize(CArchive& ar)gestoßen. Dort gibt es die Zeile:
ar << Laenge;Eigentlich würde ich erwarten, daß dort ar nun Laenge mal nach links geshiftet wird - stattdessen wird der Wert Laenge seriell in ein File geschrieben! Das hat mich etwas verwirrt, denn wie soll ich nun irgendwas shiften, wenn der dafür notwendige Operator jetzt eine völlig neue Bedeutung hat? Mal ganz abgesehen von der Frage, was der Unsinn soll?!?

Naja, nichts für Ungut; irgendeinen Sinn wird das schon haben, auch wenn sich mir dieser nicht erschließt. Ich hätte trotz SDI lieber ganz normale File- und sonstige Dialoge und ganze normale Operatoren - so wie ich sie kenne (hatte an den Teilen eigentlich nichts groß auszusetzen...).
-
Kühlwalda schrieb:
also, ich bisher nur mal eine SDI-Anwendung vom assistenten aufsetzen lassen und bin dabei auf die Methode
...::Serialize(CArchive& ar)gestoßen. Dort gibt es die Zeile:
ar << Laenge;Eigentlich würde ich erwarten, daß dort ar nun Laenge mal nach links geshiftet wird - stattdessen wird der Wert Laenge seriell in ein File geschrieben! Das hat mich etwas verwirrt, denn wie soll ich nun irgendwas shiften, wenn der dafür notwendige Operator jetzt eine völlig neue Bedeutung hat? Mal ganz abgesehen von der Frage, was der Unsinn soll?!?

Die Operator-Überladung wirkt nur für die Datentypen, für die sie definiert ist - wenn du an den Shift-Operator einen IO-Stream oder CArchive übergibst, schreibt dieser den Inhalt des rechten Operanden, wenn du eine Zahl übergibst, wird diese entsprechend geshiftet.
(und die Operator-Überladung von C++ ist kein Unsinn)
-
Du hast noch nicht viel von C++ gesehen, oder? Oder kennst Du std::cout und std::cin?
So gut wie alle Operatoren lassen sich überladen. Und sogar sinnreich wie hier!
Das << und >> für die Ein- und Ausgabe überladen werden hat sich seit Existenz der standardisierten C++ Libraries so eingebürgert.