MFC - DialogFeldbasiertes Projekt

lowterm

Grünschnabel
Hi,

ich habe unter MFC ein DialogFeldbasiertes Projekt(CMyTestDlg ) und eine
allgemeinen Klasse(myKlass). Ich möchte jetzt das DialogFeld als Zeiger an eine
Methode von myKlass übergeben. kann mir bitte jemand sagen, wie ich das mache?

Ich habe die Headerdatei von myClass in die Headerdatei von dem DialogFeld eingefügt und dann eine Variable von Typ myKlass erzeugt:

myKlass figOperator;

und versucht über figOperator.meineMethode(this); diese an
meineMethode(CMyTestDlg &myDialog) zu übergeben. Leider bekomme ich da
andauernd diese Fehlermeldung:

Bezeichner "CMyTestDlg"

Für jede Hilfe bin ich dankbar.

Gruß
 
Hi

Würde dir der this-Zeiger etwas helfen?

Wenn du in einer Klasse this verwendest, bekommst du damit die Adresse des
Objekts selber

Gruß
 
Hi,

sorry, ich habe das nicht ganz verstanden. Wie kann denn sonst meiner Methode
das Dialogfeld bekanntmachen? Was soll ich dann von dem Dialogfeld aus an meiner
Methode übergeben?


Gruß
 
Hi,

ja das habe ich schon versucht. Meldung:

fatal error C1083: Include-Datei kann nicht geoeffnet werden: 'CMyTestlDlg.h': No such file or directory Generieren von Code...

error C2061: Syntaxfehler : Bezeichner 'CMyTestDlg'

Gruß
 
Hallo,

heisst die Header-Datei tatsächlich "CMyTestlDlg.h"? Schaue doch einfach mal in der cpp des Dialogs nach und kopiere von dort die Include-Zeile.

Gruß
MCoder
 
Hi,

sorry. Es hieß, wie du es vermutet hast, anders. Den habe ich korregiert. Das
Problem bleibt aber nachwievor bestehen. Das sind ein paar von Fehlermeldungn:

e:\c++\myspiel\sprite.h(30) : error C2061: Syntaxfehler : Bezeichner 'CMyTestDlg'
e:\c++\myspiel\myspieldlg.h(50) : error C2065: 'IDD_MYTEST_DIALOG' : nichtdeklarierter Bezeichner
e:\c++\mytestdlg.h(50) : error C2057: Konstanter Ausdruck erwartet
E:\C++\MyTest\Sprite.cpp(40) : error C2511: 'Bilder' : Überladene Member-Funktion 'void (const class Sprite &,int,int,class CMyTestDlg &)' nicht in 'Sprite' gefunden
e:\c++\mytest\sprite.h(14) : Siehe Deklaration von 'Sprite'


Gruß
 
Hi,

danke. Jetzt habe ich zwei Fehlermeldungen weniger. Das Problem mit

e:\c++\myspiel\sprite.h(30) : error C2061: Syntaxfehler : Bezeichner 'CMyTestDlg'

E:\C++\MyTest\Sprite.cpp(40) : error C2511: 'Bilder' : Überladene Member-Funktion 'void (const class Sprite &,int,int,class CMyTestDlg &)' nicht in 'Sprite' gefunden

besteht aber immer noch.

Gruß
 
Deklariere den Parameter vielleicht besser als Zeiger
C++:
void meineMethode(CMyTestDlg *pMyDialog);
und füge dann in "sprite.h" direkt vor der Klassendeklaration die Zeile "class CMyTestDlg;" ein. Das ist eine Vorwärtsdeklaration und reicht aus, um bei Zeigern die Klasse bekannt zu machen. Außerdem kannst du damit auch "this" als Parameter verwenden.

Im anderen Fall (also deine bisherige Deklaration) müsstest du die beiden Header aus der cpp- in die h-Datei verschieben. Außerdem müsstest du als Parameter "*this" verwenden.

Gruß
MCoder
 

Neue Beiträge

Zurück