verständnisfragen



  • und wie hängt das ganze mit WinUnit zusammen?



  • Gar nicht. Musste erstmal nachschaun was das sein soll. Meinst du das hier? Falls ja schließt sich das sogar in gewisser Weise aus, da WinUnit für native C++ verwendet wird und nicht für .Net welches ja bei Windows Forms verwendet wird.



  • doch genau mit diesem WinUnit arbeiten wir unter CLI/C++!
    aber ok wollte ja auch nur wissen ob IComparable damit direkt zusammenhängt!



  • Wie funktioniert das? Ich meine ein Testframework das für native C++ ausgelegt ist, erwartet ja auch native Datentypen bei Funktionsaufrufen etc. Die kann C++/CLI doch aber gar net liefern. Das selbe Problem existiert natürlich auch anders herum. Das beim VS enthaltene TestFramework z.B. ist auf .Net zugeschnitten und C++/CLI Anwendungen lassen sich prima testen, native C++ Anwendungen dagegen fast gar net.



  • ok es ist dieser code den ich nicht verstehe:

    // Liste_IteratorTest.cpp
    #include "WinUnit.h"
    using namespace System;
    #include "VerketteteListe.h"
    #include "Liste.h"
    
    Liste^ new_Liste();
    
    BEGIN_TEST(Liste_Iterator_Konstruktion)
    { Liste^ liste=new_Liste();
      Liste::Iterator^ i=liste->erzeuge_Iterator();
      WIN_ASSERT_TRUE(i!=nullptr,_T("Iterator-Objekt sollte erzeugt worden sein"));
    }
    END_TEST
    
    BEGIN_TEST(Liste_Iterator_element)
    { Liste^ liste=new_Liste();
      Liste::Iterator^ i=liste->erzeuge_Iterator();
      i->ende();    
      try
      { WIN_ASSERT_THROWS(i->element(),
                        Liste::anfang_Ausnahme^,
                        _T("Iterator steht auf Anfang und darf Element nicht zurueckgeben."));
      }
      catch(Exception^ e) 
      { WIN_ASSERT_FAIL(_T("Ausnahme darf nicht kommen."));
      }
    }
    END_TEST
    

    Dann würde ich gerne noch wisse, wann die Methode OnPaint(PaintEventArgs^ e) eines Panels aufgerufen wird! ich sehe die deklaration, die definition, aber nicht den expliziten aufruf, dennoch wird die methode irgendwo, irgendwie aufgerufen!
    Was sind PaintEventArgs^ ? kann ich damit nur pointer vom typ Graphics^ übergeben?



  • nochmal zu dem onpaint:
    laut msdn:

    Hinweise zur Vererbung:

    Wenn Sie OnPaint in einer abgeleiteten Klasse überschreiben, müssen Sie die OnPaint-Methode der Basisklasse aufrufen, sodass registrierte Delegaten das Ereignis empfangen.

    eben dieser aufruf fehlt oder wird die onpaint methode automatisch aufgerufen wenn ich einen panel erstelle?



  • Dann würde ich gerne noch wisse, wann die Methode OnPaint(PaintEventArgs^ e) eines Panels aufgerufen wird! ich sehe die deklaration, die definition, aber nicht den expliziten aufruf, dennoch wird die methode irgendwo, irgendwie aufgerufen!
    Was sind PaintEventArgs^ ? kann ich damit nur pointer vom typ Graphics^ übergeben?

    edit:
    laut msdn:

    Wenn Sie OnPaint in einer abgeleiteten Klasse überschreiben, müssen Sie die OnPaint-Methode der Basisklasse aufrufen, sodass registrierte Delegaten das Ereignis empfangen.

    eben dieser aufruf fehlt oder wird die onpaint methode automatisch aufgerufen wenn ich einen panel erstelle?



  • OnPaint(..) wird von der Base-Class aufgerufen.
    PaintEventArgs enthält das Graphics-Objekt... das ist zum zeichnen mit GDI+ gedacht



  • also automatisch aufgerufen?
    edit:
    ich drücke es mal anders aus:

    habe in einer klasse folgende funktion:

    void Welt::OnPaint(PaintEventArgs^ e) 
    { 
      Graphics^ g = e->Graphics;
      brumm->zeichne(g);
    
    }
    

    sie ist so deklariert in der klasse:

    public ref class Welt:Panel
    { /** Konstruiert eine Welt */
      public: 
        Welt();
      protected: 
        virtual void OnPaint(PaintEventArgs^ e) override; // Behandlung des Paint-Ereignisses
      private:
         Void behandle_timer_ereignis(Object^ sender,EventArgs^ e); // Behandlung des Zeitgeber-Ereignisses
    
    }
    

    Ich möchte jetzt wissen, wann und wie die onPaint Methode aufgerufen wird, denn ich sehe keinen expliziten aufruf!dennoch wird der code ausgeführt!



  • Hallo,

    Ich möchte jetzt wissen, wann und wie die onPaint Methode aufgerufen wird, denn ich sehe keinen expliziten aufruf!dennoch wird der code ausgeführt!

    Einfach ausgedrückt, immer wenn das (Betriebs-)System meint, dass ein Fenster (oder Teile davon) sich neu zeichnen soll(en) (z.B. wenn es von anderen verdeckt war), wird ein Paint-Ereignis ausgelöst, in dem OnPaint aufgerufen wird.

    MfG,

    Probe-Nutzer


Anmelden zum Antworten