Alrik Fassbauer Geschrieben 9. Juni 2001 Teilen Geschrieben 9. Juni 2001 Hallo, miteinander. Ich will eine Variable der Doc-Klasse (äh...MFC) in einer Klasse eines Dialogfeldes auslesen. Scheinbar scheint das aber nicht zu gehen ?!? Jedenfalls behauptet der Compiler, er käme nicht an die Variabler heran, und das in mehreren Variationen: - Er sagt, er kämme prinzipell in der Dialogklasse nicht an die Doc-Klasse heran: Als ob er die Klasse nicht kennen würde. Einen #include-Befehl ignoriert er scheinbar. - Ein Objekt der Doc-Klasse kann scheinbar nicht erstellt werden, da es protected wäre (in der Header-Datei der Doc-Klasse). Ich weiß nicht, ob es ratsam wäre, diese Definition aus der "private"-Ecke in die "public"-Ecke zu verschieben... Ich schrecke davor zurück, da ich "unerwartete Seiteneffekte" (schöner Ausdruck ! > ) befürchte. Gibts da sonst noch einen Weg ? (Der exakte Hintergrund ist ganz einfach der, daß ich einen Wert aus einer Tabelle in eine andere Tabelle, die in einem Dialogfeld angezeit wird, hineinbekommen will - egal, wie ! Nähere Infos zu dieser Problematik im Thema "2 Tabellen mit c doppelplus korellieren" im Bereich "Datenbankprogrammierung")) MFG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Saturo Geschrieben 9. Juni 2001 Teilen Geschrieben 9. Juni 2001 lololololOOOOLLL! Sorry, aber mit diesem Problemen habe ich nächte verbracht! Also...du willst aus einer bloeden MFC-Klasse einen Variableninhalt in eine andere Klasse bekommen, richtig? Also...warscheinlich ist die Variable protected, oder alle Variablen dieser von der MFC-generierten Klasse sind automatisch protected...wenn du also die Variable nicht auf public stellen kannst, bleibt dir die möglichkeit, die ich gewählt habe: Du baust in die Doc-Klasse eine Funktion ein,die die besagt Variable als Returnwert zurückgibt. Das geht, weil die Funktion ja ein Teil der Doc-Klasse ist. Jetzt kannst du z.b. eine globale / normale main variable den Wert dieser Funktion(return var) zuweisen. Der Variablenwert ist nun aus der Doc draussen...du kannst den Spieß umdrehen und die Variable auch verändern, oder mit solchen Funktionen deinen Wert wieder in eine andere Klasse transferieren. So, ich hoffe, das klingt nicht zu durcheinander und ich bete mal, dass ich dein Problem richtig gedeutet habe, viel Glueck Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Saturo Geschrieben 9. Juni 2001 Teilen Geschrieben 9. Juni 2001 Die Funktion sollte von ausserhalb der Klasse zugänglich sein, also auf public stellen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alrik Fassbauer Geschrieben 9. Juni 2001 Autor Teilen Geschrieben 9. Juni 2001 Gute Idee ! :up: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hoagi Geschrieben 10. Juni 2001 Teilen Geschrieben 10. Juni 2001 Hi, also ich finde es keine so gute Idee in den MFC-Klassenquellen herumzuspielen. Insbsondere wenn man nicht so genau weiss, was man tut. Mein Vorschlag wäre über den Anwendungsassistenten keine dialogbasiertes Anwendungstemplate zu erstellen, sondern ein SDI-Projekt zu erstellen. Wenn du dann in Schritt 6 des Anwendungsasisstenten deine Viewklasse nicht von CView ableiten lässt, sondern auf CFormView umstellst, hast du fast den gleichen Effekten wie bei einer Dialoganwendung, mit dem Unterschied, daß du gleich die Dokumentenklasse mit dabei hast. Good Luck Hoagie Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Saturo Geschrieben 10. Juni 2001 Teilen Geschrieben 10. Juni 2001 was? diese Idee habe ich mir aus sämtlichen Fachbüchern erlesen! *lacht* Ne, im Ernst. Ich hasse die MFC. Es ist ein engstirniges System für Einsteiger. Wenn du einige Zeit damit verbringst, kommst du schon garnicht mehr ohne sie aus...weil es halt fuer alles eine Funktion gibt. Mein Tip: lasst die Finger von der MFC! Spätestens bei DIngen wie OpenGL oder etwas komplexeren Gebieten, die man nicht dem Programm anpassen kann, sondern wo man das Programm auf z.B. Opengl anpassen muss, stösst du ganz schnell an die grenzen dieses komischen MFC-Systems. Ok, es gibt auch z.B. OpenGl für MFC, aber das ist wieder so eingeschränkt aufgebaut und erlaubt schlecht Programmänderungen . Ok, ich rede zuviel. Ich verzichte jedenfalls auf die MFC, weil ich mein Programm sehr gut alleine Klassen-und Objektorientiert erstellen kann(hoffentlich ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alrik Fassbauer Geschrieben 10. Juni 2001 Autor Teilen Geschrieben 10. Juni 2001 Ich glaube, ich habe es zwischenzeitlich (und starken Verbrauch an Nerven) geschafft: In der View-Klasse lese ich ein, schicke es zur Dialogklasse (von der ich ein Objekt erstellt habe), gehe anschließend in die Dialogklasse (d.h. der Dialog wird aufgerufen) und lese dort aus. Ich hatte mal zwar eine Variable in der Doc-Klasse als "Zwischenspeicher" benutzt, aber es geht eigentlich auch so. Einmal abgesehen davon bin ich erst noch in der Ausbildung, da kann ich schlecht erkennen, was guter Programmierstil ist und was nicht (naja, einmal abgesehen von ein paar Basics). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hoagi Geschrieben 10. Juni 2001 Teilen Geschrieben 10. Juni 2001 Achso, du erstellst dein Dialog aus ner View-Klasse. Viele Wege führen nach Rom, aber hier noch einmal ein Vorschlag um auf die Doc-Klasse (mittelbar) zuzugreifen. In der Dialog Klasse erhällst du über GetParent ein Pointer auf das CWnd-Objekt von deiner View. Mit ((CMyView*)GetParent())->GetDocument() etc.solltest du eigentlich Zugriff auf das Dokumenten-Objekt erhalten. Alternativ könntest du einen Zeiger auf die View in deine Dialog-Klasse einbauen und die in der View-Klasse mit this initialisieren. Solong Hoagi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alrik Fassbauer Geschrieben 10. Juni 2001 Autor Teilen Geschrieben 10. Juni 2001 Ja, danke. So, ich habe jetzt einen arbeitsreichen Tag hinter mir. Der morgige Tag wird noch arbeitsreicher ! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.