Zeiger auf Formular



  • Hallo,

    Ich habe folgendes Problem:
    In meinem Dialog-Basierten Programm habe ich ein Trace-Fenster, in welchem ich die Aktionen des Programms ausgeben möchte. Die eigentlichen Aktionen des Programms mach jedoch eine andere Klasse (CName mit Header Name.h und Quelltext Name.cpp). Diese habe ich in meine Dialog-Klasse (CProgrammnameDlg) mit include implementiert.

    Ich möchte jetzt jedoch auch die Aktionen des Klasse CName im Trace-Fenster ausgeben, doch wenn ich mit include die Klasse CProgrammnameDlg (#include ProgrammnameDlg.h) in die Klasse CName implementiere, erscheinen Fehlermeldungen, welche vorher nicht erscheinen (z.B. dass die ID eines Buttons nicht stimmt o.ä.).

    Frage: Wie kann ich auch ohne die Klasse mit include zu implementieren einen Zeiger auf den "Main-Dialog" erstellen oder wie kann ich sonst auf das Trace-Fenster zugreifen??? Hat jemand eine Idee???

    Gruss

    BigRed



  • Mach mal im Header nur ein

    class CName;
    

    oberhalb der Klassendeklaration.

    Und im cpp solltest du es dann auch includen können, wie du es gewohnt bist.

    Sollte es dann gehen, hast du Bekanntschaft mit einem rekursiven Include gemacht. 🙂



  • Hallo,

    Danke für den Tip. Hat jedoch leider nicht funktioniert. Es kommt immer noch der gleiche Fehler:

    ID_DIALOGNAME_DLG: undeclared identifier

    Mir ist aufgefallen, dass das nicht nur bei dem "Main-Dialog" so ist, sondern auch bei anderen Dialog-Klassen (Sorry: Im Titel steht "Forumlar"... das ist natürlich Quatsch 🙄 )

    Immer die IDs des Dialogs sieht der Compilter als "undeclared".... 😕



  • BigRed schrieb:

    ID_DIALOGNAME_DLG: undeclared identifier

    Mir ist aufgefallen, dass das nicht nur bei dem "Main-Dialog" so ist, sondern auch bei anderen Dialog-Klassen (Sorry: Im Titel steht "Forumlar"... das ist natürlich Quatsch 🙄 )

    Immer die IDs des Dialogs sieht der Compilter als "undeclared".... 😕

    Wenn du deinen Dialog mit dem Recource-Editor/Klassenassistenten erstellt hast, sollte in der Header-Datei deiner Dialog-Klasse etwas ähnliches stehen wie

    // Dialogfelddaten
    	//{{AFX_DATA(CProgrammnameDlg)
    	enum { IDD = ID_DIALOGNAME_DLG};
    

    Die Deklaration der Dialog-ID sollte in der entsprechende .rc-Datei auftauchen.
    Diese müsste bei der Compilierung eingebunden sein.

    Weiter: an welcher Stelle bzw. in welcher Klasse wird die Dialog-Instanz erzeugt. Dort steht dann auch der Zeiger zu deinem Dialog zur Verfügung.
    Kannst aus dieser Klasse auf die im Dialog anzuzeigenden Daten zugreifen?

    Gruß Steffen



  • Hallo,

    Bei mir wird jeder Dialog (der "Main-Dialog" sowieso) Modal erzeugt. Das alles geschieht über die CProgrammnameDlg-Klasse. Von dort funktioniert auch das Einbinden.

    Ich möchte gerne im Main-Fenster ein Trace-Fenster bearbeiten. Wenn ich jedoch auf diese Klasse nicht zugreifen kann, kann ich auch nichts eingeben.

    Mit SendDlgItemMessage (o.ä.) kann ich auch nichts machen, da ich hierfür wieder die Header-Datei der Dialog-Klasse einbinden muss.

    Ich versuche mal, in der .rc-Datei die Definierung der ID zu finden... mal sehen.

    Danke schon mal.

    Gruss

    BigRed


Anmelden zum Antworten