none
globale MainWindow-Variable RRS feed

  • Frage

  • Hallo,

    ich bin auf der Suche nach einer Funktion, die mir von jedem Programmpunkt aus das Hauptfenster zurück liefert (alternative Lösung mittels globalem Zeiger). Hintergrund ist, dass mein MyWindow (von Form abgeleitet) eine ImageList enthält, auf deren Bilder ich in der Klasse MyPaintBox (von PictureBox abgeleitet) zugreifen will.

     

    Im Ergebnis so was wie "MyPaintBox.Image = Application::MainWindow->ImageList.Images[0]"

     

    Frage Eins : Gibt es eine fertige Funktion, die (header-)dateiübergreifend aufgerufen werden kann (quasi ein "FindControl") ?

     

    Frage Zwei : Wie würde es als globaler Zeiger realisiert werden ?
    Mein bisheriger Versuch... (halloWindow wurde benutzt, damit keine Kollision mit evtl. bestehender MainWindow-Variablen
    auftritt)

     

    aus 1. Datei (globals.h)
    // globale Variablen
    ref class MyWindow;                                           // forward-Deklaration, von Form abgeleitet.
    ref class MyPaintBox;                                         // forward-Deklaration, von PictureBox abgeleitet.
    extern public gcroot<MyWindow^> halloWindow;   // gcroot, weil verwalteter Typ.


    aus 2. Datei (Main.cpp)
    int main(usw..)
    ...
    Form^ halloWindow = gcnew MyWindow();         // zurück in Form umwandeln, da "Run" sonst nicht läuft.
    Application::Run(halloWindow);
    return 0;

     

    aus 3. Datei (PaintBox.h)
    // Konstruktor
    MyPaintBox::MyPaintBox (usw...)
    this->Image = ::halloWindow->ImageList1.Images[0]; // (Fehler) "::halloWindow" scheint zu klappen, aber wie weiter ??


    Bonusfrage : Weshalb taucht "halloWindow" im Objektbrowser nicht unter "Globale Funktionen und Variablen" auf, wo es doch als "extern public" angegeben wurde ?


    Schon mal Danke im Voraus !

    Samstag, 6. September 2008 14:05