Grafische Benuteroberfläche - Verhalten in der Header-Datei programmieren??



  • Hallo,

    Bin gerade erst auf Visual Studio 2005 umgestiegen. Habe davor schon grafische Oberflächen mit Borland C++ Builder und GTK erstellt.
    Nachdem ich mir VS etwas angeschaut habe stellte sich mir nun folgende Frage:

    Ich erzeuge ein neues Projekt mit Neu -> Projekt -> Visual C++ -> CLR -> Windows Forms Application

    Dann bekomme ich eine leere 'Form1'.

    Wenn ich nun z.B. einen Button erstelle und doppelt draufklicke dann komme zu der Stelle wo ich programmieren kann was dann geschehen soll.

    Soweit war ich das auch immer gewohnt. Nur befinde ich mich in diesem Fall in einer Header Datei.
    Ist es bei dieser Art von Projekt üblich das Verhalten der Oberfläche in der Header Datei zu programmieren?

    Wäre dankbar, wenn mich jemand aufklären könnte.

    Danke schon mal im voraus.



  • Bei C++/CLI ist es so üblich

    BR
    Vinzenz



  • Ist so üblich, niemand hindert dich aber daran, lediglich den Prototyp des Funktionsaufrufs in den Header zu schreiben und den eigentlichen Code in die cpp-Datei. So wie man es unter C++ gewohnt war.
    Alles andere, sprich wenn du anfängst dein Programm zu modulieren, läuft dann wieder auf dieses Prinzip hinaus. Also, Prototyp in Header und Code in cpp, und die Header-Datei dann irgendwo mit include einbinden. Es läuft einfach besser, weil du bei Änderungen nur die cpp-Datei neu erstellen musst und nicht den Header auch noch. Bei umfangreichem Quellcode kann das manchmal ein Weilchen dauern, vor allem wenn in den Headern viel gelinkt wird.



  • Vielen Dank.

    Jetzt stellt sich mir die nächste Frage. Ich will in die Header Datei nur den Prototyp der Funktion schreiben.

    Z.B. in die Form1.h:

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e);
    

    Dann will ich mir eine Form1.cpp erstellen, in welche die Funktionsdeklarationen rein sollen.
    Ich habe folgendes probiert - hat aber nicht geklappt.

    #include "stdafx.h"
    #include "Form1.h"
    
    System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
    {
    	this->label1->Text = "Hello world";
    }
    

    Ich habe vor die Funktion auch mal 'Form1::' versucht - ging auch nicht.

    Was habe ich falsch gemacht?

    Ist sicher ein Anfängerfehler aber irgendwie werde ich mit dem Visual Studio noch nicht so richtig warm 😉



  • Ha falscher Alarm.
    Da war ich wohl zu voreilig 😉

    Also Header wie oben und Funktion dann so:

    #include "stdafx.h"
    #include "Form1.h"
    
    using namespace test2;
    
    void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e) 
    {
    	this->label1->Text = "Hello world";
    }
    

    Trotzdem nochmals Danke an alle, die sich Gedanken dazu gemacht haben.



  • philosoph schrieb:

    using namespace test2;
    
    void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e) 
    {
    	this->label1->Text = "Hello world";
    }
    

    So solltest du das besser nicht machen. Mach es so:

    namespace test2
    {
    
        void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e) 
        {
    	    this->label1->Text = "Hello world";
        }
    }
    

    Das erste kann dir mal Probleme bereiten.

    BR
    Vinzenz


Anmelden zum Antworten