override OnPaintBackground Panel ???????????



  • Hallo ich würde gerne wissen wie man in cli eine Methode überschreibt?
    ich dachte es wäre nicht so schwer aber wenn ich es teste dann merke ich das es diese Methode nicht überschreiben hat.
    mein Code sieht wie folgt aus:

    header

    #pragma once
    
    using namespace System::Windows::Forms;
    ref class ViewPanel :public System::Windows::Forms::Panel
    {
    public:
    	int c;
    	ViewPanel(void);
    protected:
    	virtual void OnPaintBackground(System::Windows::Forms::PaintEventArgs e);
    };
    

    cpp datei

    #include "StdAfx.h"
    #include "ViewPanel.h"
    static int i=0;
    ViewPanel::ViewPanel(void)
    {
    }
    
    void ViewPanel::OnPaintBackground(System::Windows::Forms::PaintEventArgs e)
    {
    	i++;
    }
    

    und ich weiss das man eigenlich um sicher zu gehen auch schreiben kann:
    virtual void OnPaintBackground(System::Windows::Forms::PaintEventArgs e)override;
    oder
    virtual void OnPaintBackground(System::Windows::Forms::PaintEventArgs e)new;
    aber wenn ich das mache sagt der comiler:

    ViewPanel.cpp
    d:\b.q\net2005\__mycaptureproject\capturetest13_doubeview\capturetest\ViewPanel.h(10) : warning C4490: "override": Falsche Verwendung des Überschreibungsspezifizierers; "ViewPanel::OnPaintBackground" stimmt nicht mit einer Basismethode der Verweisklasse überein.
            "new" oder "override" sind nur zulässig, wenn eine übereinstimmende Basismethode einer Verweisklasse vorhanden ist.
    MyThreads.cpp
    d:\b.q\net2005\__mycaptureproject\capturetest13_doubeview\capturetest\ViewPanel.h(10) : warning C4490: "override": Falsche Verwendung des Überschreibungsspezifizierers; "ViewPanel::OnPaintBackground" stimmt nicht mit einer Basismethode der Verweisklasse überein.
            "new" oder "override" sind nur zulässig, wenn eine übereinstimmende Basismethode einer Verweisklasse vorhanden ist.
    CaptureTest.cpp
    d:\b.q\net2005\__mycaptureproject\capturetest13_doubeview\capturetest\ViewPanel.h(10) : warning C4490: "override": Falsche Verwendung des Überschreibungsspezifizierers; "ViewPanel::OnPaintBackground" stimmt nicht mit einer Basismethode der Verweisklasse überein.
            "new" oder "override" sind nur zulässig, wenn eine übereinstimmende Basismethode einer Verweisklasse vorhanden ist.
    

    hat jemand eine idee was ich falsch gemacht habe? Die variabe i habe ich reingeschrieben um sicher zu gehen das der compiler diese methode nicht weg optimiert und sicher zu sein das auch wirklich meine methode aufgerufen wird, was leider nicht der fall ist:(??
    wäre sehr dankbar für hilfe
    mfg



  • Naja, die Signatur stimmt nicht... das Argiment hat ein "^"...

    virtual void OnPaintBackground(System::Windows::Forms::PaintEventArgs ^e) override;
    


  • Ja das habe ich vergessen aber daran liegt es auch nicht.

    und wenn ich im header explizit schreibe

    virtual void OnPaintBackground(System::Windows::Forms::PaintEventArgs^ e)override;
    

    kennt der Compiler diese basismethode nicht ????????????????

    d:\b.q\net2005\__mycaptureproject\capturetest13_doubeview\capturetest\ViewPanel.h(12) : warning C4490: "override": Falsche Verwendung des Überschreibungsspezifizierers;
     "ViewPanel::onOnPaintBackground" stimmt nicht mit einer Basismethode der Verweisklasse überein.
            "new" oder "override" sind nur zulässig, wenn eine übereinstimmende Basismethode einer Verweisklasse vorhanden ist.
    MyThreads.cpp
    


  • ref class test :  System::Windows::Forms::Panel
    {
    public: 
    	virtual void OnPaintBackground(System::Windows::Forms::PaintEventArgs ^e) override
    	{
    
    	}
    };
    

    lässt sich ohne Probleme übersetzen



  • Danke nochmal für das interesse, irgendwie habe ich es falsch aufgeteilt in header und cpp Datei , aber eigentlich kann ich auch die cpp Datei weglassen da ich es ja auch inline deklarieren kann das kurze stück.

    Ich würde gerne noch wissen ob jemand weiß, wie man am effektivsten Bilder zeichnet.
    Momentan zeichne ich auf das panel immer wieder neue Bitmaps (video)es ist relative echtzeitfähig , aber ich habe gerade noch ein komischen effet,
    den ich selbst nicht wegbekomme wenn ich die onPaintBackground Methode überschreibe , undzwar flimmert nicht mein Bild was ich auf das panel zeichne ,
    sondern der Hintergrund meiner Windows Desktops oberfläche, wenn ich im Panel Scrolle??
    Das verstehe ich überhauptnicht, ich dachte ich zeichne nur im panel


Anmelden zum Antworten