[erledigt] komme vom borland c++ builder und finde keinen rechten einstieg



  • guten abend,

    gleich vorweg: meine fragen sind sehr banal, dessen bin ich mir bewusst. ich habe aber bereits viel probiert und komme einfach auf keinen gruenen zweig. hab auch in den faqs nach relevanten themen gesucht aber nichts gefunden.
    daher freue ich mich ueber jeden link!

    mein(e) problem(e):

    - ich erstelle mit visual studio 2008 ganz normal ein "windows forms application" projekt. ich platziere einen button auf der form, mache einen doppelklick und finde mich in der .h wieder ?! von borland bin ich gewohnt direkt in der Form1.cpp zu landen, wo ich direkt meinen code hinzufuegen kann. wie laeuft das hier?

    - visual studio erstellt eine <projectname>.cpp file - jedoch ohne passende .h ? was hat es damit aufsich?

    ich wuerde einfach gerne wissen wo genau ich meinen eigenen code hinsetzen darf/soll/kann - anders gesagt, wie kann ich zbsp durch einen buttonklick (wie gewohnt) eine methode ausfuehren die ich hinzugefuegt habe?

    vielen vielen dank fuer eure hilfe,
    seja



  • seja schrieb:

    ...hab auch in den faqs nach relevanten themen gesucht aber nichts gefunden.

    Der Compiler selber hat auch eine Hilfe...

    seja schrieb:

    mein(e) problem(e):

    - ich erstelle mit visual studio 2008 ganz normal ein "windows forms application" projekt. ich platziere einen button auf der form, mache einen doppelklick und finde mich in der .h wieder ?! von borland bin ich gewohnt direkt in der Form1.cpp zu landen, wo ich direkt meinen code hinzufuegen kann. wie laeuft das hier?

    Ich habe mal aus Scherz für dich ein WinForms-Projekt angelegt, ohne jemals mit WinForms gearbeitet zu haben (Und auch meine C++/CLI Kenntnisse sind marginal, wenn gleich ich durchaus mit dem .Net Framework und C# hantiert habe, und ebenso C++ Kenntnisse besitze).

    Es scheint hier bei den Masken ein Weg gegangen zu werden, den ich von C# kenne: Keine Trennung von Deklaration und Implementierung (Er setzt ja eindeutig die öffnende und schließende geschweifte Klammer im Header). Zudem Ist im Header selbst beschrieben welche Teile du nicht modifizieren sollst, und ggf. auch wo du deinen Code einfügst. Also soweit solltest du dir schon die Dateien anschauen mit denen du arbeitest.

    seja schrieb:

    - visual studio erstellt eine <projectname>.cpp file - jedoch ohne passende .h ? was hat es damit aufsich?

    Könnte es sein, das du niemals ANSI C++ Programmiert hast, sondern gleich mit der RAD Umgebung vom C++ Builder begonnen hast? In reinen C++ Consolen Anwendungen schreibt man üblicherweise für die Datei in der die main-Funktion steht auch keinen Header - wozu auch. Ähnlich wird es hier auch sein.

    seja schrieb:

    ich wuerde einfach gerne wissen wo genau ich meinen eigenen code hinsetzen darf/soll/kann - anders gesagt, wie kann ich zbsp durch einen buttonklick (wie gewohnt) eine methode ausfuehren die ich hinzugefuegt habe?

    Also der Doppelklick hat mich eindeutig zu dem Funktionsrumpf (wenn auch für mich bezogen auf C++ ungewohnter Weise im Header, aber wie gesagt: aus C# [ebenso Java] kenne ich auch die gänzlich fehlende Trennung). Und im Eigenschaftenfenster kann ich auch wie vom C++ Builder gewohnt Eigenschaften und Ereignisse anpassen.

    cu André





  • vielen dank dir (euch beiden)?

    das video ist genau das, was ich gesucht habe, vielen dank! jetzt ist auch mir klar wie ich das machen muss...
    bei borland waere dann <projectname>.cpp die Form1.cpp, daher meine verwirrung.

    und ja, ich bin direkt bei borland eingestiegen, mein fehler...

    seja



  • seja schrieb:

    vielen dank dir (euch beiden)?

    Uns beiden. Sofern die Software für das machen der Videos aber günstig ist würde mich durchaus mal interessieren welche das ist, mit dem das Video aufgezeichnet wurde.

    seja schrieb:

    bei borland waere dann <projectname>.cpp die Form1.cpp, daher meine verwirrung.

    Ich würde auch anders als im Video eine neue cpp mit dem Namen der Form verwenden.

    seja schrieb:

    und ja, ich bin direkt bei borland eingestiegen, mein fehler...

    Ich habe inzwischen bemerkt das es sich tatsächlich eigentlich immer als Problem heraus stellt, wenn man zuerst ein spezielles Framework, und nicht die grundsätzliche Sprache lernt. Gerade bei Anfängern ist dies recht problematisch.

    cu André



  • Aber an anderen Stellen auser der Form1.h im Entwurfsmodus, hat man doch keine Möglichkeit z.B. den Wert einer Progressbar hochzuzählen oder?
    Ich zumindest kann dies nicht. Lediglich in der Form1.h bekomme ich Zugriff auf die entprechende Funktion oder gibts da auch noch einen feinen Trick?



  • Selbstverständlich kann man auch in Windows-Forms Anewendungen Code und Deklartaion trennen. Nur weil da jetztt .NET oder Windows-Forms mit im Spiel sind, heißt das jetzt nicht ich muss meinen kompletten Code in der Header-Datei unterbringen.

    Erstellt man in VC++ 2008 Express ein neues WindowsForms-Projekt erhällt man unter anderem folgende Datei.

    // WndFormTest.cpp: Hauptprojektdatei.
    
    #include "stdafx.h"
    #include "Form1.h"
    
    using namespace WndFormTest;
    
    [STAThreadAttribute]
    int main(array<System::String ^> ^args)
    {
    	// Aktivieren visueller Effekte von Windows XP, bevor Steuerelemente erstellt werden
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false); 
    
    	// Hauptfenster erstellen und ausführen
    	Application::Run(gcnew Form1());
    	return 0;
    }
    

    Jedem Programierrer der zumindest mal eine Einführung in die Prgrammiersprache C/C++ hatte, dem sollte Zeile 4 ins Auge stechen.
    Hier wird der Header des erzeugten WindowsForm-Objects eingebunden, also kann ich auch hier meine Methoden für die Klasse 'Form1' einfügen und habe darin natürlcih auch Zugriff auf alle Elemente der Bedienoberfläche.

    namespace WndFormTest{
    	void Form1::InitializeComponentEx() {
    		this->button1->Text = "Test";
    	}
    }
    

    Von der Methode InitializeComponent() in der Header-Datei sollte man natürlich die Finger weg lassen, hier werkelt der Designer.

    Natürlich lassen sich auch die Methoden für die Ereignisse unterbringen.
    Die IDE verzweigt zwar mit einem Doppelklick auf das Element immer wieder in die Header-Datei, allerdings mache ich aus der vorgeschlagenen Methode ein Methoden-Prototypen und schreibe den Quelltext dann in die Quelltextdatei.

    MfG
    Marco



  • asc schrieb:

    Uns beiden. Sofern die Software für das machen der Videos aber günstig ist würde mich durchaus mal interessieren welche das ist, mit dem das Video aufgezeichnet wurde.

    Diese hier

    War nicht ganz billig...

    Aber da gibt es noch die Express Version für 39US$, was nicht allzu teuer ist.

    asc schrieb:

    Ich würde auch anders als im Video eine neue cpp mit dem Namen der Form verwenden.

    Warum willst Du den für die Form1.h noch eine andere cpp anlegen?
    Bläht nur das Projekt auf und die cpp existiert schon <Projektname.cpp>

    Gruß Doug_HH



  • Doug_HH schrieb:

    Warum willst Du den für die Form1.h noch eine andere cpp anlegen?
    Bläht nur das Projekt auf und die cpp existiert schon <Projektname.cpp>

    Macht es deutlich übersichtlicher: Wenn ich zu einer Form den Code sehen will kann ich mich nach meiner Variante darauf verlassen diesen in den Dateien mit dem Formnamen zu finden. Was hat bitteschön die Implementierung der Form in der <Projektname.cpp> logisch zu suchen?

    In C++ zumindest ist es üblich pro Klasse jeweils eine Header- & Sourcedatei zu verwenden.

    cu André


Anmelden zum Antworten