Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Till

Alter Hase

  • »Till« ist der Autor dieses Themas

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

1

04.01.2004, 22:45

mfc-Problem mit Dialogklassen

Hallo, ich MAL WIEDER ein mfc-Problem (obwohl es doch hier eigentlich um Spieleprogrammierung gehen soll... :angel: ).

Und zwar, wenn ich eine Dialogfeldbasierende mfc-Anwendung erstellen lasse und Dateien habe, die den Header dieser Hauptdialogklasse einbinden, dann wird die Dialogklasse nicht richtig interpretiert und die Dialogfeld-ID ist plötzlich unbekannt.

Jetzt sieht es so aus, dass ich egal ob für externe Module oder irgenwelche anderen Verwendungen die Dialogklasse nicht verwenden kann, obwohl dort meine wichtigen Spieldaten liegen. Ich habe das Problem teilweise durch eine andere Klasse gelöst, die die Daten enthält und von der die Dialogklasse dann zusätzlich abgeleitet wurde und die dann über virtuelle Funktionen kommunizieren konnte, aber nun habe ich neue Module und die brauchen wirklich diese Klasse.
Kann mir irgend jemand verraten, wie ich von außen an diese blöde Klasse kommen soll???

miko93

Frischling

Beiträge: 14

Wohnort: Regensburg

  • Private Nachricht senden

2

05.01.2004, 00:43

Re: mfc-Problem mit Dialogklassen

Zitat von »"Till"«

... die den Header dieser Hauptdialogklasse einbinden, dann wird die Dialogklasse nicht richtig interpretiert und die Dialogfeld-ID ist plötzlich unbekannt...


Kann es sein, dass ein #include "Resource.h" in der stdafx.h (ziemlich am Anfang) das Problem löst (zumindest die Dialogfeld-ID bekannt macht) ?

Till

Alter Hase

  • »Till« ist der Autor dieses Themas

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

3

05.01.2004, 11:44

Naja, teilweise...

In einem test-Projekt hat es geklappt, aber bei meiner eigentlichen Anwendung ist das Problem ein wenig anders (ich dachte, das wäre ein ähnliches Problem, aber ich habe mich wahrscheinlich geirrt). Die Hauptdialogklasse wird in eine neue Quellcode-Datei inkludiert, aber diese inkludiert einen weiteren Dialogklassen-Header, der eine Menge Fehler verursacht (hier ein paar davon):

Quellcode

1
2
3
4
5
c:\programme\microsoft visual studio\myprojects\pokemon\mapwindow.h(17) : error C2504: 'CDialog' : Basisklasse undefiniert
c:\programme\microsoft visual studio\myprojects\pokemon\mapwindow.h(21) : error C2629: 'class CMapWindow (' unerwartet
c:\programme\microsoft visual studio\myprojects\pokemon\mapwindow.h(21) : error C2238: Unerwartete(s) Token vor ';'
c:\programme\microsoft visual studio\myprojects\pokemon\mapwindow.h(25) : error C2065: 'IDD_WORLD' : nichtdeklarierter Bezeichner
c:\programme\microsoft visual studio\myprojects\pokemon\mapwindow.h(25) : error C2057: Konstanter Ausdruck erwartet


Danach kommt es dann wieder zu Fehlern in der Haupdialogklasse, die auch so ähnlich aussehen.

Insgesamt sind das dann 65 Fehler, die nur dadurch entstehen, dass ich meinen Dialogheader in eine .cpp-Datei einbinde... ??? ???

Ich komm einfach nicht mehr weiter...
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

miko93

Frischling

Beiträge: 14

Wohnort: Regensburg

  • Private Nachricht senden

4

05.01.2004, 12:16

Hm... wenn er CDialog nicht kennt, dann fehlen ihm doch irgendwo die mfc Deklarationen, oder ? In meiner stdafx.h sieht das so aus:

#include <afxwin.h> // MFC-Kern- und -Standardkomponenten
#include <afxext.h> // MFC-Erweiterungen

Die neu erzeugte Datei bindet auch stdafx.h mit ein, oder ?

Ein ähnliches Problem hatte ich glaube auch 'mal. Seit damals landen alle Header meiner (neu) erzeugten Klassen in der stdafx.h des Projektes (unter dem include von Resource.h), und alle Dateien binden das Dingens mit ein (sollten sie ja sowieso tun).

Wenn auch das nichts hilft, vielleicht kannst Du ja das "Grundgerüst" Deines Projektes hier als attachment (link) posten. Dann kann man sich am Original versuchen.

Till

Alter Hase

  • »Till« ist der Autor dieses Themas

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

5

05.01.2004, 18:05

JUHUUU!

Vielen Dank, stdafx.h war die Lösung!!! Ich habe ihn einfach nicht eingebunden!!!!!!!

Nun habe ich 'nen globalen Header der stdafx.h einbindet und den bei sowieso (ab jetzt) JEDE Klasse einbinden muss. Und alles funktioniert super.

Nochmal Danke für die Hilfe,
mfg,
Till
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

Werbeanzeige