Sorry, nochmal: Ableiten eines 'Controls'



  • Sorry wenn ich nerve, aber ich bin am verzweifeln:

    Ich möchte von der Klasse System::Windows::Forms::Panel eine eigene, sagen wir: SpecialPanel ableiten um ihr Eigenschaften hinzuzufügen (double buffering) die die Klasse Panel nicht hat.

    Ich lese und google wie wild und sehe doch noch nicht durch:

    Offensichtlich muss ich die neue Klasse so ableiten:

    ref class SpecialPanel :
    public System::Windows::Forms::Panel
    {
    public:
    SpecialPanel (void);
    };

    Richtig?

    Aber wo schreibe ich das hin???
    In die "meinTest.cpp", die "meinTest.h", in eine neue Datei? Wie / wo binde ich was mit include / using namespace ein?

    Danke für jede Hilfe 😞

    MfG Steffen



  • Hi,
    Geh in den Solution Explorer, Rechtsklick auf Dein Projekt, Add New Item. Wähle dort "User Control" und benenne es SpecialPanel. Dann sollte er Dir eine .h & .cpp-Schablone generieren. Die Vererbung public System::Windows::Forms::UserControl könntest Du dann in Panel ändern.

    BTW. Hast Du Dir mal überlegt, auf C# umzusteigen und damit besser von der Literatur und Beispielen profitieren zu können? Mittlerweile hätte sich das ja fast amortisiert.



  • BTW. Hast Du Dir mal überlegt, auf C# umzusteigen und damit besser von der Literatur und Beispielen profitieren zu können? Mittlerweile hätte sich das ja fast amortisiert.

    Ich fürchte, das genau folgendes dann ständig passiert:

    Aber wo schreibe ich das hin???

    Oder besser: "wo steht das???"
    Ich steig durch C#-Code einfach nicht durch, weil man nicht mehr den vom WinForms-Designer generierten Code finden kann, bzw. sich durch 20tausend(übertrieben) Dateien durch arbeiten muss...



  • Um C# wirst Du aber nicht drum herum kommen. Viele Beispiele sind einfach für C# (oder VB.Net) geschrieben. nn hatte es mal schön formuliert. Sinngemäß: C++/CLI ist nur als Brücke zwischen native und .Net gedacht.

    Mit der Dokumentation, die es für C++/CLI gibt, wird man alleine nicht Glücklich.



  • witte schrieb:

    Hi,
    Geh in den Solution Explorer, Rechtsklick auf Dein Projekt, Add New Item. Wähle dort "User Control" und benenne es SpecialPanel. Dann sollte er Dir eine .h & .cpp-Schablone generieren. Die Vererbung public System::Windows::Forms::UserControl könntest Du dann in Panel ändern.

    Das habe ich getan. Kannst Du mir bitte noch verraten wie ich ein solches SpecialPanel in meine Form1 einbaue?

    In der Toolbox erscheint das SpecialPanel nicht und wenn ich einfach ein normales Panel aus der Toolbox in den Designer ziehe und dann in SpecialPanel ändere müsste ich ja auch im Designer generierten Code (this->panel1 = (gcnew System::Windows::Forms::Panel());) ändern.

    MfG
    Steffen



  • Ich habe das immer mit dem Umweg über ein separates Projekt gemacht. Also ein Windows Forms Control Library-Projekt erstellen, dort das Panel bauen und dann die dll in die Toolbox mit der Browse-Funktion laden. Dann kannst Du es auf das Form Deines "Hauptprojektes" ziehen.


Anmelden zum Antworten