Aus allen Dateien auf das gleiche Fenster zugreifen



  • Guten Morgen,

    folgende Problemstellung. Ich schreibe ein Programm, in dem ich (für die Statistik und für die spätere Fehlersuche) ein LogBuch in Form eines Fensters anlegen will. Das Fenster exisitiert als eigenstädinge Form.
    Ich möchte jetzt gerne aus jeder Datei und aus jeder Klasse Daten in dieses Form schreiben, an welche Stelle muss ich denn die globale Variable (WindowLog LogBook) schreiben? "WindowLog" bezeichnet dabei das Form und LogBook die Variable über die ich das Form anspreche.

    Vielen Dank im voraus

    lg Baseball



  • seh ich das richtig, das du ein Dialog (Form) hast, in dem divere Textfelder vorhanden sind, in die du die Daten der der Log Datei anzeigen willst??

    Liest du diese Daten aus und speicherst diese als Objekt einer Klasse??

    beschreib mal genauer



  • Also ich habe verschiedene Klassen auf mehrere Dateien verteilt, und in diesem LogFenster existiert ein RichText-Objekt. Wenn jetzt ein Fehler in einer der Klassen auftritt, will ich das in dieses RichText-Objekt hineinschreiben.

    Ich brauche also eine globale Variable vom Typ des LogFensters, damit ich von jeder Position auf dieses eine Fenster zugreifen kann. Wenn ich zum Beispiel in das Hauptformular

    WindowLog Log;
    Log.Show();

    reinschreibe, kann ich nicht aus einer anderen Datei auf dieses Fenster zugreifen, aber genau das will ich.

    lg Baseball



  • dann musst du ein HWND Pointer des Fenster an all deine klassen übergeben mit dem kann du dann daten an das Fenster senden von allen klassen aus...

    Als Fenster nimmst normalerweise ein Dialog

    CDialog *Winlog;
    
    void FensterÖffnen(){
    
    Winlog= new CDialog();
    
    Winlog->doModal;
    
    delete Winlog;
    }
    

    über das Winlog Pointer (der global ist) kannst den HWND anfordernn und Das Fenster ansprechen..
    der Code ist nur mal grob gecodet.. also keine geewehr:)



  • Also ich habe das ganze noch mal ein bisschen überarbeitet. So weit funktioniert alles, so wie ich es möchte. Jetzt habe ich ein Hauptformular "Main" und eine extra Klasse "Base". Aber ich kann nicht von "Base" auf "Main" zureifen, woran kann denn das liegen?

    #include "StdAfx.h"
    #include "Base.h"
    #include "Main.h"
    
    Base::Base(void)
    {
        cBase++;
        Main.dlgEvent.Show();
    }
    
    Base::~Base()
    {
        cBase--;
    }
    

    In der Zeile "Main.dlgEvent.Show();" zeigt mir der Compiler die Fehlermeldung :

    ".\Base.cpp(8) : error C2065: 'Main' : undeclared identifier"

    Die Klasse "Main" ist doch in der "Main.h" definiert!

    lg Baseball



  • bevor du auf "main" zugriefen kannst, musst du zuerst das meinobjekt erzeugen...

    main Hauptforumar;
    Hauptformular.dlgEvent.Show();
    


  • Kurze Zwischenfrage: Arbeitest du mit Windows Forms?

    Imho geht das von Boris schief, weil das jeweils ein neues Fenster wäre.



  • Ja, ich nutze die Express Edition. Das Hauptformular wird ja vom Compiler eigentlich schon erstellt, das heist das Hauptformular exisitiert bereits.

    lg Baseball



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Da bekomme ich doch die gleiche Fehlermeldung, weil "Main" ja immer noch unbekannt ist. Kann es sein, dass ich die Klasse "Main" sowas wie Privatstatus hat und ich deshalb nicht aus einem anderen Headerfile zugreifen kann?

    lg Baseball



  • Hast du jetzt das Problem gelöst ?
    Ich steh vor dem selben problem!


Anmelden zum Antworten