Hallo zusammen, ich programmiere seit ein paar Wochen ein bisschen mit Visual C++ 2008. Ich habe ein Programm geschrieben, welches 2 Fenster hat, das Main.h und das Optionen.h. Im Code des Fensters Main.h habe ich mit #include "Optionen.h" das andere Fenster eingebunden. Wenn ich das Fenster "Optionen.h" geöffnet habe und es z.B. wieder schliesse, möchte ich im anderen "Main.h" den Text eines Labels ändern. Wenn ich jetzt im Code des Fensters "Optionen.h" genau das selbe vorhabe wie im Main.h nur umgekehrt, nämlich include "Main.h" damit ich Zugriff darauf habe, bekomme ich vom Compiler ca. 100 Fehler Meldungen. Ich hab es auch schon mit namespace::Main::usw versucht, doch da sagt er mir, dass er das Fenster gar nicht kennt. Wie kann ich über das Fenster "Optionen.h" auf Text und andere Eigenschaften des Fensters "Main.h" zugreifen und die Werte ändern. Ich hoffe Ihr könnt mir folgen. Gruss
Peter F. schrieb: > Ich habe ein Programm geschrieben, welches 2 Fenster hat, das Main.h und > das Optionen.h. Das sind Headerdateien, keine Fenster. Vermutlich meinst Du irgendwelche Klassen, die wiederum Fenster repräsentieren, und deren Deklarationen in den Headerdateien vorliegen. Anscheinend programmierst Du in "C++/CLI", das ist nicht C++, sondern eine Microsoft-Perversion für den .Net-Unterbau (die früher "Managed C++" genannt wurde). Ansonsten solltest Du die Darstellung von Daten von deren Speicherung separieren, die Fenster sind nur für deren Darstellung zuständig, die Daten aber werden in einem Dokument gespeichert, auf das die Fenster über wohldefinierte Zugriffsfunktionen zugreifen. Das wird als "Document-View"-Konzept bezeichnet, eine Verfeinerung (und etwas abweichende Herangehensweise) ist das "Document-View-Controller"-Konzept.
Warum wollen soviele Anfänger mit C++/CLI programmieren? Das Zeug hat nur eine einzige Daseinsberechtigung: .NET-Anwendungen und native Libraries miteinander verheiraten. Es ohne Not zu verwenden ist was für Masochisten. Ich war zum Glück noch nie drauf angewiesen.
der mechatroniker schrieb: > Warum wollen soviele Anfänger mit C++/CLI programmieren? Das Zeug hat > nur eine einzige Daseinsberechtigung: .NET-Anwendungen und native > Libraries miteinander verheiraten. Es ohne Not zu verwenden ist was für > Masochisten. Ich war zum Glück noch nie drauf angewiesen. Sorry, aber das bringt mich kein Milimeter weiter. Rufus Τ. Firefly schrieb: > Ansonsten solltest Du die Darstellung von Daten von deren > Speicherung separieren, die Fenster sind nur für deren Darstellung > zuständig, die Daten aber werden in einem Dokument gespeichert, auf das > die Fenster über wohldefinierte Zugriffsfunktionen zugreifen. ...und wie mach ich das ?
Hallo Hast du schon eine Lösung? Willst du die Änderungen nach dem Schliessen des Optionen.h Fensters? Eine möglichkei wie Rufus geschriben hat wäre, wenn du die Optionen in ein separates Dokument, z.B. XML schreibst und wieder ausliest. Vorteil ist das du die Daten immer gespeichert hast und beim Starten der Anwendung wieder auslesen kannst. XML Dateien sind aber auch leicht "von Hand" veränderbar. Oder: du kannst es in die Registry schreiben. Oder: Mach im Optionen.h Methoden für die Rückgabe deiner Werte. In der Main.h kannst du dann die Methoden von optionen.h aufrufen (falls OK gedrückt) und die Werte speichern oder was auch immer. Gruss Bruno
Bruno schrieb: > Eine möglichkei wie Rufus geschriben hat wäre, wenn du die Optionen in > ein separates Dokument, z.B. XML schreibst und wieder ausliest. Das habe ich nicht beschrieben, und auch nicht ansatzweise damit gemeint. "Document" bezieht sich nicht zwingend auf eine Datei, sondern nur auf ein die Daten verwaltendes Objekt. Ob das seinen Inhalt aus einer Datei, einer Datenbank oder was auch immer holt, oder ob es bei jedem Programmstart "bei Null" anfängt, ist für die Problemstellung hier uninteressant.
Hallo Bruno schrieb: > Hast du schon eine Lösung? Nein, habe ich nicht. Bruno schrieb: > Eine möglichkei wie Rufus geschriben hat wäre, wenn du die Optionen in > ein separates Dokument, z.B. XML schreibst und wieder ausliest. > Oder: du kannst es in die Registry schreiben. So umständlich will ich das nicht machen. Ich hab vorher mit Visual basic programmiert und das ging ungefähr so: [frmOptionen.Button.Klick]: frmMenü.lblLinkStatus.text = "geklickt" ...fertig In C++ hab ich etwas ähnliches versucht... [frmOptionen.Button.Klick]: BTRemote::Main::lblLinkStatus->Text = "geklickt"; ..tja, geht aber nicht. Es kommt nur: "error C2065: 'lblLinkStatus': nichtdeklarierter", natürlich, weil es das Label im Fenster >>Optionen<< nicht gibt.
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.