Von aus Dialog genutzer Klasse im Dialog zeichnen.



  • Ach du wolltest deine Klasse dort als Property Zeiger initialisieren?

    Wobei ich mich da frage, warum er einen Fehler wirft. Bringt er noch einen Fehler, dass er den Datentyp "CSinSoundBuffer" nicht kennt?



  • Ne habe den Fehler gerade beseitigt in dem ich vor der Deklaration der Klasse CSinSoundBuffer die Vorwärtsdeklaration mache anstatt nem include als
    class CAudiotest;

    Jetzt klappt es wie gewünsch und ich kannaus der Klasse auf den Dialog zugreifen.
    Aber danke für die Unterstützung bis hierhin. 👍



  • Ich war wohl etwas zu vorschnell, jetzt meckert der Compiler sobald ich innerhalb der Klasse auf Methoden aus dem Dialog zugreifen will und gibt diese
    Fehlermeldung aus.

    1>c:\projects\gsm testtool\sinsoundbuffer.cpp(47) : error C2027: use of undefined type 'CAudioTest'
    1> c:\projects\gsm testtool\sinsoundbuffer.h(11) : see declaration of 'CAudioTest'
    1>c:\projects\gsm testtool\sinsoundbuffer.cpp(47) : error C2227: left of '->DrawCurves' must point to class/struct/union/generic type

    Deklariert wird wie folgt

    class CAudioTest; //Vorwärtsdek.
    class CSinSoundBuffer
    {
       ...
       CAudioTest* myDlg;
       ...
    }
    
    //Zugriff in der Methode der Klasse
    myDlg->DrawCurves(Wert, Wert);
    
    //Im Dialog wird nach Instanziierung der Klasse
    m_pSinBuf->myDlg = this;
    


  • Hast du vorwärts und Rückwärtsinclude drin?



  • Nein nur vorwärts



  • Setz mal noch den Rückwärts-Include und gib dann mal bescheid was dein Compiler sagt. 😉



  • Wieder die gleichen Fehler wie vorhin.
    Vorwärtsdek hab ich drin gelassen



  • Wobei mich das gerade verwundert. Da ich selbst momentan ein Programm habe in dem ich in beide Richtungen include und es funktioniert.

    Hängt damit zusammen, dass ich in meinen Dialogen Daten aus dem MainDialog brauche und somit eben Zeiger auf den Maindialog drin habe.

    Darüber kann ich wunderbar auf Funktionen und Property's des MainDialogs zugreifen.

    MainDialog:

    #include <foo>
    ...
    #include "dialog2.h"
    ...
    // Im On Init:
    dialog2 dlg;
    dlg.dialog1 = this;
    ...
    

    Dialog2:

    #include <bar>
    ...
    #include "dialog1.h"
    ...
    

    In der Headerdatei dann eben als Property:

    dialog1 *myDlg;
    

    Und mein Programm tut was es soll.



  • Aber was anderes mache ich ja auch nicht 😕



  • Ich probier mal eben was.

    /////////////

    Der Include innerhalb der Klasse, erfolgt der in der Header oder in der CPP Datei?



  • Wenn du den include des Dialogs meinst, in der .h Datei



  • Ich versteh grad eins nicht, warum hast du in deinem Programm extra stehen:

    class CAudioTest;
    

    Es reicht doch ein include der Headerdatei.

    Desweiteren müsstest du nicht CAudioTestDlg includieren?

    // So ich mach jetzt Feierabend und von zu Haus aus lösen wir dein Problem.



  • inflames2k schrieb:

    Ich versteh grad eins nicht, warum hast du in deinem Programm extra stehen:

    class CAudioTest;
    

    Das hatte ich ja vorhin nur getestet und damit halt keine Fehlermeldungen bekommen wie beim inkludieren.

    Habe beim Anlgen der Klasse das Dlg Kürzel vergessen daher ist CAudioTest schon richtig:D.

    Ich mache auch gleich Feierabend, machen wir morgen weiter.
    Danke und nen schönen Feierabend.



  • mr. main schrieb:

    inflames2k schrieb:

    Ich versteh grad eins nicht, warum hast du in deinem Programm extra stehen:

    class CAudioTest;
    

    Das hatte ich ja vorhin nur getestet und damit halt keine Fehlermeldungen bekommen wie beim inkludieren.

    Habe beim Anlgen der Klasse das Dlg Kürzel vergessen daher ist CAudioTest schon richtig:D.

    Ich mache auch gleich Feierabend, machen wir morgen weiter.
    Danke und nen schönen Feierabend.

    Also wenn ich eine Anwendung erstelle, erstellt er automatisch die CAnwendungsnameDlg.cpp und CAnwendungsnameDlg.h und extra noch die Datei CAnwendungsname.cpp.



  • Das erklärt sich dadurch, das dies ein Dialog ist, der aus dem menü einer View aufgerufen wird und somit als Resource geaddet wurde und dann vergibt man ort ja einen Namen.



  • Achso ja, dann versteh ich das ganze. 🙂



  • Morgen,

    sprich du verstehst wo mein Problem liegen könnte oder nur warum der Name nicht mit Dlg endet?



  • Nur warum der Name nicht mit Dlg endet. Bin die ganze Zeit am Überlegen woran es liegen könnte.

    Wenn du den Include auf die Datei hast, sollte er ja dementsprechend eigentlich die Klasse kennen.



  • Sehe ich genauso, könnte es evtl. an der Reihenfolge der includes liegen?



  • Inwiefern sollte es denn daran liegen?


Anmelden zum Antworten