Eigene Label-Klasse - OnPaint überschreiben
-
Manchmal sieht man den Wald vor lauter Bäumen nicht!
Nachdem ich das ^ Zeichen in die Parameterliste eingefügt habe, hat es funktioniert.Jetzt habe ich das Problem, wie kann ich dieses Label in einem Form im gleichen Projekt nutzen? Kann ich das in die Toolbox einfügen?
Wenn ich in der Datei Form.cpp schreibe:
include "Userlabel.cpp"
kommt die Fehlermeldung, dass die Datei bereits in der Form.obj enthalten ist.
Tue ich das nicht kommt die Fehlermeldung "Bezeichner Userlabel nicht deklariert".
-
versuch mal
#include "UserLabel.h"
hand, mogel
-
In der .cpp stehen die Methoden der Klasse. Die müssten doch auch inkludiert werden, oder?
-
Ok, muss man wohl nicht.
Danke für die Hilfe.
-
aus der CPP wird eine OBJ Datei ... die H Datei sagt nur den anderen CPP Dateien das da die Methoden irgendwo existieren - aber sie existieren ... spätestens der Linker mault rum wenn er Methoden nicht finden kann
-
Wie kann ich mit c++/cli aus einer abgeleiteten Klasse eine Funktion der Basisklasse aufrufen, die in der abgeleiteten Klasse überschrieben wurde.
void UserLabel::OnPaint(System::Windows::Forms::PaintEventArgs^ e) { ... ZeigerAufBasis->OnPaint(e); }
Unter VB.NET geht das mit Mybase.
-
Label::OnPaint(e);
wenn mich jetzt nicht alles täuscht, mogel
-
Ich brauch aber doch einen Bezug zum aktuellen Objekt, in der Art des this-Zeigers.
-
tompkins schrieb:
Ich brauch aber doch einen Bezug zum aktuellen Objekt, in der Art des this-Zeigers.
Das Objekt steht implizit fest, da OnPaint eine nicht- statische Member Funktion ist.
Simon
using namespace System; ref struct Base { virtual void f() { } }; ref struct Derived : public Base { virtual void f() override { Base::f(); } }; int main(array<System::String ^> ^args) { Derived^ d = gcnew Derived; d->f(); return 0; }
-
Alles klar, es funktioniert.
Danke für die Hilfe!