[TUTORIAL] C++ - Anfänger

03/19/2010 09:19 Visonar#1
Hallo,
ich habe vor einigen Tagen angefangen mit C++ zu scripten.
Da ich schon ein bisschen Erfahrung mit solchen Sachen hatte, viel es mir etwas leichter, aber dennoch arbeite ich mit Tutorials, die mir weiterhelfen, wenn ich Probleme habe, aber die auch als gutes Nachschlagewerk dienen.

Nur leider habe ich, als ich mich hier im Forum mal durch die SuFu klickte, kein gutes, geeignetes Tutorial gefunden.
Klar, es kann sein, dass das manche von euch anders sehen, mein Tutorial bezieht sich aber nicht nur auf einzelne, kleine Programme, sondern ich möchte auch auf die Verwendung der Windows Forms-Anwendung eingehen.

Nun gut, jetzt wollen wir aber anfangen!



Was wir brauchen:

- Visual C++ 2008


Nicht mehr, nicht weniger, download hier:



[Only registered and activated users can see links. Click Here To Register...]


Wenn wir das nun erfolgreich installiert haben öffnen wir es am Besten mal.

Es öffnet sich ein Fenster. So, und wir wollen jetzt eine neue Form erstellen.

Dazu gehen wir auf Datei --> Neu --> Projekt:


[Only registered and activated users can see links. Click Here To Register...]


Es wird sich ein weiteres Fenster öffnen, in dem wir mehrere Auswahlen sehen. Man könnte jetzt auch einfach ein leeres Projekt öffnen, doch wir wählen "Windows Forms-Anwendung" und geben der ganzen Geschichte noch einen Namen:


[Only registered and activated users can see links. Click Here To Register...]


Und da haben wir auch schon unsere leere Form vor uns, die wir natürlich jetzt erstmal gestalten werden.




1) Das An-Aus - Spiel


Als erstes fügen wir zu unserer Form zwei Buttons hinzu, indem wir mit dem Mauszeiger rechts am Rand auf "Toolbox" gehen und auf "Button" klicken.

Diese zwei Knöpfe benennen wir in jeweils "An" und "Aus". Schön sieht es aus, wenn wir noch die Farbe und Größe der Schriften verändern.

Aber jetzt fügen wir noch ein Label hinzu. Einfach wie auf "Toolbox" gehen und "Label" suchen.

Dieses klatschen wir einfach neben die zwei Buttons und verändern die Farbe
in rot und vergrößern es:


[Only registered and activated users can see links. Click Here To Register...]


Wenn eure Form ungefähr so aussieht, klicken wir einmal doppelt auf den "Aus-Button" und es öffnet sich der Code.

Wir schreiben jetzt unter die Zeile
PHP Code:
private: System::Void button1_Click(System::Object^  senderSystem::EventArgs^  e) { 

Wir scrollen ein bisschen höher, bis wir unser Label als Code sehen und kopieren den unter die Zeile(oben).
Nachdem löschen wir das Labe, sodass, wenn wir jetzt unsere Form öffnen es nicht mehr da ist.


Nun wechseln wir wieder in unsern Entwurf und klicken doppelt auf den "An-Button".

Wir kopieren wieder den "Label-Code" unter die Zeile, die ich schon oben genannt habe, allerdings verändern wir noch etwas.
Und zwar die Farbe in
grün und den Text aus "Aus" in "An".


So, und das war’s auch schon.


Der ganze Code solle jetzt wie folgt aussehen:




PHP Code:
#pragma once


namespace MeinkleinesCProgramm {

    
using namespace System;
    
using namespace System::ComponentModel;
    
using namespace System::Collections;
    
using namespace System::Windows::Forms;
    
using namespace System::Data;
    
using namespace System::Drawing;

    
/// <summary>
    /// Zusammenfassung für Form1
    ///
    /// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch
    ///          die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern,
    ///          das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt.
    ///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen
    ///          arbeiten, die diesem Formular zugewiesen sind.
    /// </summary>
    
public ref class Form1 : public System::Windows::Forms::Form
    
{
    public:
        
Form1(void)
        {
            
InitializeComponent();
            
//
            //TODO: Konstruktorcode hier hinzufügen.
            //
        
}

    protected:
        
/// <summary>
        /// Verwendete Ressourcen bereinigen.
        /// </summary>
        
~Form1()
        {
            if (
components)
            {
                
delete components;
            }
        }
    private: 
System::Windows::Forms::Button^  button1;
    protected: 
    private: 
System::Windows::Forms::Button^  button2;
    private: 
System::Windows::Forms::Label^  label1;

    private:
        
/// <summary>
        /// Erforderliche Designervariable.
        /// </summary>
        
System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
        /// <summary>
        /// Erforderliche Methode für die Designerunterstützung.
        /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
        /// </summary>
        
void InitializeComponent(void)
        {
            
this->button1 = (gcnew System::Windows::Forms::Button());
            
this->button2 = (gcnew System::Windows::Forms::Button());
            
this->label1 = (gcnew System::Windows::Forms::Label());
            
this->SuspendLayout();
            
// 
            // button1
            // 
            
this->button1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif"9.75FSystem::Drawing::FontStyle::BoldSystem::Drawing::GraphicsUnit::Point
                
static_cast<System::Byte>(0)));
            
this->button1->ForeColor System::Drawing::Color::ForestGreen;
            
this->button1->Location System::Drawing::Point(1013);
            
this->button1->Name L"button1";
            
this->button1->Size System::Drawing::Size(7529);
            
this->button1->TabIndex 0;
            
this->button1->Text L"An";
            
this->button1->UseVisualStyleBackColor true;
            
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            
// 
            // button2
            // 
            
this->button2->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif"9.75FSystem::Drawing::FontStyle::BoldSystem::Drawing::GraphicsUnit::Point
                
static_cast<System::Byte>(0)));
            
this->button2->ForeColor System::Drawing::Color::Red;
            
this->button2->Location System::Drawing::Point(1081);
            
this->button2->Name L"button2";
            
this->button2->Size System::Drawing::Size(7529);
            
this->button2->TabIndex 1;
            
this->button2->Text L"Aus";
            
this->button2->UseVisualStyleBackColor true;
            
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
            
// 
            // Form1
            // 
            
this->AutoScaleDimensions System::Drawing::SizeF(613);
            
this->AutoScaleMode System::Windows::Forms::AutoScaleMode::Font;
            
this->ClientSize System::Drawing::Size(287122);
            
this->Controls->Add(this->label1);
            
this->Controls->Add(this->button2);
            
this->Controls->Add(this->button1);
            
this->Name L"Form1";
            
this->Text L"An-Aus - Spiel";
            
this->ResumeLayout(false);
            
this->PerformLayout();

        }
#pragma endregion
    
private: System::Void button1_Click(System::Object^  senderSystem::EventArgs^  e) {
            
// 
            // label1
            // 
            
this->label1->AutoSize true;
            
this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif"48System::Drawing::FontStyle::BoldSystem::Drawing::GraphicsUnit::Point
                
static_cast<System::Byte>(0)));
            
this->label1->ForeColor System::Drawing::Color::Green;
            
this->label1->Location System::Drawing::Point(11126);
            
this->label1->Name L"label1";
            
this->label1->Size System::Drawing::Size(16773);
            
this->label1->TabIndex 2;
            
this->label1->Text L"An";
             }
    private: 
System::Void button2_Click(System::Object^  senderSystem::EventArgs^  e) {
            
// 
            // label1
            // 
            
this->label1->AutoSize true;
            
this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif"48System::Drawing::FontStyle::BoldSystem::Drawing::GraphicsUnit::Point
                
static_cast<System::Byte>(0)));
            
this->label1->ForeColor System::Drawing::Color::Red;
            
this->label1->Location System::Drawing::Point(11126);
            
this->label1->Name L"label1";
            
this->label1->Size System::Drawing::Size(16773);
            
this->label1->TabIndex 2;
            
this->label1->Text L"Aus";

             }
};


Wenn wir jetzt unser Programm starten ("Debugging starten") klicken und auf den "An-Button" klicken, sollte "An-Text" erscheinen. Das ganze natürlich auch mit dem "Aus-Button".


Und jetzt habt ihr euer erstes, kleines Programm fertig:cool:


Natürlich könnt ihr jetzt auch andere Sachen scripten, die auf dem ersten Programm basieren, das macht das ganze einfacher.


Ich hoffe, euch hat mein kleines Tutorial gefallen und etwas weiter geholfen.

Vielleicht sehen wir uns ja schon bald bei meinem nächsten:D
03/23/2010 16:57 .BritainAndy#2
Ich fang heute damit an, super TuT thx
03/23/2010 23:04 flo8464#3
Das ist kein C++, sondern C++/CLI. C# eignet sich für jeden Anwendungsfall besser.
03/23/2010 23:26 MrSm!th#4
Wie flo schon sagte, fängt man mit solchen Tuts lieber bei C# oder VB an.
C++ ist definitiv nicht geeignet, um so einzusteigen.
Es ist Quatsch, da man die ganzen Grundlagen noch nicht kennt und gar nicht weiß, was Klassen sind und damit zb. auch nicht, was diese :: bedeuten.
Desweiteren, und nun gut lesen, ist C++ KEINE Scriptsprache und man scriptet damit auch nicht.
Genau so wenig ist ein Hack zwingend ein Script ist (hast du nicht geschrieben, ich wollts nur noch mal erwähnen); so langsams nervts mit diesem Autoit-Jargon.
03/23/2010 23:33 1AraB1#5
Also wenn cih das Scripten lernen will sollte ich nicht mit C++ anfangen , aber mit was dann ? Könnt ihr mir helfen , per pm mir paar gute Tut's schicken ?

MFG AraB

Danke im Vorraus :D
03/24/2010 00:13 flo8464#6
Quote:
Originally Posted by MrSm!th View Post
Wie flo schon sagte, fängt man mit solchen Tuts lieber bei C# oder VB an.
Ich bezog mich nicht auf Anfänger, eigentlich sollte niemand ernsthaft C++/CLI nutzen ;)

Einzige Ausnahme sind halt Fälle, in denen native und managed Elemente miteinander funktionieren müssen.