Wie wird bei der GUI Programmierung die main() Funktion ersetzt? Wichtig!!!
-
Danke dir erstmal dschensky...
Allerdings bin ich noch nicht ganz klar in welche Richtung ich jetzt was machen muss.
Ich habe in meiner (funktionierenden) Konsolenanwendung 2 Klassen:
Zentrale // es gibt immer nur eine Zentrale
und Filialen // hier kann es mehrere geben, die in einem STL Vektor, der wiederrum innerhalb Zentral gespeichert ist, gespeichert werden.
Allerdings soll das Zentral objekt erst zur Laufzeit erstellt werden, und danach beliebig viele Filialobjekte in den Vektor aufgenommen werden. Danach sollen verschiedene Methoden für die Filialobjekte ausgeführt werden.
Wie soll ich also die Filiale erst zur Laufzeit erstellen, obwohl sie schon in dem Klassendeklarationsteil des Formulars aufgeführt ist?
Wie kann ich das in etwa realisieren?
-
Tja, dann solltest du hald vielleicht die Instanzen als Member des passenden Formulars, eines Dokuments, als globale Variable (davon ist abzuraten) oder ähnliches erstellen...
-junix
-
riennevaplus schrieb:
Wie soll ich also die Filiale erst zur Laufzeit erstellen, obwohl sie schon in dem Klassendeklarationsteil des Formulars aufgeführt ist?
1. mit Zeiger-Variable arbeiten und das Objekt mittels new erstellen
2. (aber eigentlich 1.) Die Nase endlich in ein paar C++-Bücher stecken!!
-
nochmal danke, aber da mit den Büchern : Ich habe schon viele Grundlagenbücher durch, aber da ich jetzt mit GUI anfangen möchte, ist mir halt noch nicht ganz klar wie ich die Funktionalität meiner Konsolenanwendung in eine GUI packen kann? Wenn ihr möchtet, poste ich mal meine Konsolenanwendung und ihr sagt mal wie ich das in eine GUI umsetzen kann...
-
Bessere Variante: du erstellst zur Übung mal ein paar GUI-Anwendungen und experimentierst damit herum, um ein Grundverständnis für die Abläufe zu bekommen. Im Laufe dieser Experimente sollte sich auch schon die eine oder andere Idee für die Überführung deines bestehenden Codes ergeben.
Wenn du dann mit der Umsetzung einer dieser Ideen Probleme haben solltest kannst du hier gern nochmal konkrete Fragen stellen.
-
riennevaplus schrieb:
Wie wird bei der GUI Programmierung die main() Funktion ersetzt? Wichtig!!!
Du bist nicht wichtiger als andere. Hier ist alles gleich wichtig!!!
-
Amen
-
Eine etwas unverfrorene Reaktion eines HIlfesuchenden... zumal Webfritzi - auch wenn er sich im Ton vergriffen hat - recht hat...
Und nu is schluss mit OT
-junix
-
Tut mir leid, nur leider sind solche Reaktionen sinnlos und helfen keinem.
Sorry
-
riennevaplus schrieb:
Tut mir leid, nur leider sind solche Reaktionen sinnlos und helfen keinem.
Genau so wie deine Reaktion ala "Amen". Ende der Diskussion. Wenn du trotzdem noch den Bedarf weiterer Diskussionen verspüren solltest, eröffne einen THread im OT-Forum oder pack deine Argumente in ein EMail
-junix
-
@ Jansen
Habe mich jetzt schon länger damit beschäftigt, trotzdem ist mir nicht klar wie ich das bestehende Konsolenprogramm in eine GUI Anwendung überführen kann.
Hab mich auch schon tot gegoogled und nichts, aber auch gar nichts, gefunden...
Bin am verzweifeln.
-
Also wenn ich mir dein Code so angucken müssen z.b Sachen wie
cout << cin >>
usw weg! Das ist Konsole und hat nichts mit GUI zu tun. main() wird wie gesagt WinMain() usw...
-
Im Prinzip musst du die Programmlogik nochmals nachbauen... einfach überführen kannste ned... Wenn das Programm allerdings halbwegs nach den Regeln der Kunst geschrieben wurde, kannst du die meisten Libraries und Funktionen einfach übernehmen. Der Nachbau der Programmlogik dürfte dann das kleinste Problem sein...
Da - wie du schon selber erkannt hast - GUIs Event driven sind und nicht wie Konsolenanwendungen ablaufgesteuert sind, lässt sich die Applikation nicht ohne einen gewissen Aufwand umbauen...-junix
-
Hi,
wenn du gerne mal mit GUI programmierung anfagen willst(ich denke mal, dass du windows benutzt) dann schau dir doch mal http://www.winprog.net/tutorial/ an. Mit der VCL von Borland geht es zwar leichter, aber du hast, wenn du nur die VCL benutzt, kein wirkliches verständniss, wie Windows funktioniert. Desshalb schau dir doch mal dir Windows API an.
-
Am liebsten würde ich mein Konsolenprogramm hier mal posten...
Also ich erkenne schonmal das die komplette Ein und Ausgabe ersetzt werden muss..aber das Problem ist das ich in meinen Programm 2 Klassen habe
" Zentrale " und " Filiale "
In meiner Konsolen main() Funktion habe ich zunächst eine Zentrale erzeugt
Zentrale eineZenttrale(1.07,300)
dann habe ich über eine Methode "baueFiliale()" Filialen erzeugt und mittels this Zeiger eine Assoziation zur Zentrale erzeugt
Was folgte sind einige polymorphe Methoden zur Auswertung und Geschäftvorfälle mittels rand() Funktionen, die beispielsweise die Attribute Umsatz, Tankinhalt der einzelnen Filialen ändern.
Die Filialen habe ich in einen STL - Vektor gespeichert der auch innerhalb der Zentrale gespeichert wurde und mit .pushback() die filialobjekte gleich nach erzeugen in den Vektor gespeichert und ausschließlich über for() schleifen auf alle Objekte im Vektor zugegriffen.
Wie ihr seht ist das Beispiel ziemlich komplex und ich weiß nicht wie ich in der GUI die ObjektInstanzen und den Vektor und die Assoziationen implememntieren soll...
HILFE!!!
-
riennevaplus schrieb:
In meiner Konsolen main() Funktion habe ich zunächst eine Zentrale erzeugt
Na das machst du jetzt eben im Konstruktor der Form oder in OnCreate, aber auf jeden Fall mit new()!
Die Funktionen deiner Klassen haben ja so weit ich das sehen aknn nichts mit Ausgabe zu tun. Wenn da nur gerechnet oder so wird, kannst du das einfach übernehmen.riennevaplus schrieb:
HILFE!!!
hatten wir das nicht schon mal?
-
Versuche das doch mal.
#include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { Zentrale eine_zentrale(1.07,300); eine_zentrale.baueFiliale("Europaplatz 5 - 1194 Hamburg",500,0,0); eine_zentrale.baueFiliale("Brunnen Str 1 - 4252 Berlin",500,0,0); eine_zentrale.baueFiliale("Hauptstrasse 3 - 4557 Mein",500,0,0); eine_zentrale.setzeLiterpreis(1.08); do { eine_zentrale.kundenTanken(); } while(MessageBox(0, "Sollen die Tankstellen geschlossen werden?", "Frage", MB_YESNO) == IDYES ); eine_zentrale.auswerten(); return 0; }
Mit der Windows Funktion
MessageBox( 0, "Nachricht", "Nachricht", MB_OK )
kannst du auch einfache meldungen ausgeben.Das wird wohl das leichteste sein.
Vergiss #include <windows.h> nicht!
-
hmm das ist glaube ich keine gute idee, da der nutzer über das gui ja die filialen selber erstellen soll...
andere ideen?
-
*hochschieb* :p
hat keiner einen ansatz instanzen eigener klassen in einer gui dynamisch zu erzeugen und in stl vektoren zu speichern????
-
Lies den Thread nochmals von oben durch...
-junix