PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Visual C++ = C++ ?



RaG3
12.08.2008, 19:07
Hallo,

ich beschäftige mich gerade mit dem Buch Visual C++ 2005 für Kids :D

So weit so gut, hab den Einsteig gefunden, da mir von VB einiges noch bekannt vorkommt.


Ich bin davon ausgegangen, dass C++ und Visual C++ das gleiche ist, vorallem weil dies im Buch auch so angedeutet wird, allerdings habe ich nun mal im Internet nach C++-Codes recherchiert. Dabei ist mir aufgefallen dass die sich allerdings nicht ähneln.

Ich vermute nun , dass es sich bei C++ nur um Konsolenanwendungen handelt ,bei Visual C++ ja eine Form vorhanden ist und sich daher unterscheiden. Lieg ich da richtig?

Wenn ja, wo finde ich denn spezielle Seite für Visual C++? Hab bisher noch nix gefunden.

Vielen Dank ;)



namespace mathe {

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;
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::Label^ label1;
protected:

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->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->label1 = (gcnew System::Windows::Forms::Label());
this->SuspendLayout();
//
// button1
//
this->button1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(0)));
this->button1->Location = System::Drawing::Point(116, 189);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(75, 45);
this->button1->TabIndex = 0;
this->button1->Text = L"OK";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(57, 89);
this->textBox1->Multiline = true;
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(182, 75);
this->textBox1->TabIndex = 1;
//
// label1
//
this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(0)));
this->label1->Location = System::Drawing::Point(2, 25);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(317, 23);
this->label1->TabIndex = 2;
this->label1->Text = L"Gib eine Note von 1 bis 6 ein:";
this->label1->Click += gcnew System::EventHandler(this, &Form1::label1_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(292, 240);
this->Controls->Add(this->label1);
this->Controls->Add(this->textBox1);
this->Controls->Add(this->button1);
this->Name = L"Form1";
this->Text = L"Form1";
this->ResumeLayout(false);
this->PerformLayout();

}
#pragma endregion

int note;



private: System::Void label1_Click(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)

{
note = Convert::ToInt32(textBox1->Text);

if (note ==1) label1->Text = "Sehr gut!";
if (note ==2) label1->Text = "gut!";
if (note ==3) label1->Text = "befriedigend!";
if (note ==4) label1->Text ="ausreichend";




}
};
}

staebche
12.08.2008, 19:14
das ist alles aber bestimmt keinn c++ o.O

Whit3z
12.08.2008, 19:36
heisst das nich Visual C++ und nicht Virtual ?? o.O

RaG3
12.08.2008, 19:49
Berichtigt.

Staebchen, was meinst du damit? Ich hab den ähnlichen Visual C++ Code so aus meinem Buch übernommen

Whit3z
12.08.2008, 20:11
also ich bin kein Experte, also bitte flamed mich nicht an!

Du kannst dir natürlich den "normalen" Code von C++ für Konsolenanwendungen ansehen und den auch in Visual C++
verwenden, du musst den halt nur abändern, weil bei Programmen mit ner GUI, hast du ja kein cout auf der
Kommandozeile, sondern Messageboxen, Edit-Felder und andere Steuerelemente.

Du musst den Code so umschreiben, dass er mit den STeuerelementen und mit ihnen verbunden Variablen
interagieren kann!
aber die Syntax für For schleife und If und else ist ja gleich.


Tipp: befasse dich mal mit den Klassen, bei C++, erstmal für Konsolenanwendungen.
Also alles was mit Klassen und Vererbung und Polymorphie zu tun hat.

Das kann dir helfen bei Visual C++ besser durchzublicken!

zao
12.08.2008, 20:13
das ist alles aber bestimmt keinn c++ o.O
hier spricht scheinbar der fachman oO

Es handelt sich bei dem Code sehr wohl um C++, soweit ich das sehe ist das Ne Windows Forms...C++.net halt.
Btw: das Buch bietet nen sehr guten Einstieg, besonders für programmieranfänger. Ich hab auch damit angefangen. Das buch vermittelt dir die grundlagen und die syntax, if-anwesiungen, schleifen, funktionen etc
und das is in nativem C++ das selbe.

Grüße

RaG3
12.08.2008, 20:21
Ok, danke euch beiden für die Tipps :wink:

Ich werde erstmal das Buch durcharbeiten.


also ich bin kein Experte, also bitte flamed mich nicht an!

White Window, meine Aussage war nicht an dich gerichtet und keinerlei angreifend. Falls du es so aufgenommen hast, i am sorry ;)

Whit3z
12.08.2008, 20:27
nee RaG3,
ich hab das nur rein prophylaktisch, mit dem flamen geschrieben,
da ich schon länger auf dem board bin und weiß wie sich einige leute verhalten wenn ein anderer was falsches sagt ^^

l0dsb
12.08.2008, 20:42
C++.net halt.
Also known as: Managed.C++, umständliche Syntax und viel zu langsam (da ja sowohl natives und .net-basierendes verwendet wird). Aber wie schon erwähnt, die Syntax entspricht weitestgehend der von C/C++, auch wenn es die Funktionen nicht tun. ;)

blackberry
12.08.2008, 21:55
Visual C++ ist die Microsoft Distribution von ANSI C++.
Was Microsoft gemacht hat ist was Microsoft immer macht:
- Kontrolle
+ Mist den Niemand braucht

Ich würde dir empfehlen Visual C++ zu deninstallieren und dir ein richtiges C++ Buch zu kaufen.
ANSI C++ hat alles was man braucht um die meißten Programme schreiben zu können und es ist auch viel einfacher zu verstehen, da du deinen Code 100% selber schreiben kannst und nicht in die vom Visual C++ IDE generierten Funktionen mit Code befüllst und keine Ahnung davon hast was hinter den Kulissen abläuft.

Außerdem gibt es auch für "normales" C++ Bibliotheken (zB. GTK+) um Programme mit benutzeroberflächen zu erstellen.

-[RiDER]-
13.08.2008, 00:34
Hi :D


das ist alles aber bestimmt keinn c++ o.O
hier spricht scheinbar der fachman oO

Es handelt sich bei dem Code sehr wohl um C++, soweit ich das sehe ist das Ne Windows Forms...C++.net halt.
C++.Net - also kein C++. ;)

BlackBerry hat ganz recht, mit VisualC++ wirst Du niemals die Essenz der Sprache erreichen, sondern immer auf dem Stand eines Pseudo-Programmierers bleiben...


Ich vermute nun , dass es sich bei C++ nur um Konsolenanwendungen handelt ,bei Visual C++ ja eine Form vorhanden ist und sich daher unterscheiden. Lieg ich da richtig?
Nein, nur bringt VisualC++ einen WYSIWYG-GUI-Editor (auch also GUI-IDE oder so bezeichnet...), was man in einer konventionellen Entwicklungsumgebung nicht finden wird.
Aber GUI, Threads, STL, .Net - das sind alles Sachen, von denen ich die Finger lassen würde, solange es geht!
Lieber erst programmieren lernen und dann wieder verlernen.

OOP - wems gefällt. Ich findes grausam - nicht nur, weil mich das "programmiererische" daran stört (z.B. kommen immer wieder Leute, die OOP programmieren zu mir mit dem Gedanken, ein Problem nur und ausschließlich mit Hilfe von Threads lösen zu können; eben weil OOP die Vorstellung des sequenziellen Ablaufs eines Programms zerstückelt), sondern man erkennt allein an der Idee, OOP zu "erfinden", dass gerade Programmierer die 0pfer (EDiT:wtf??? Warum wird das Wort "Opfer" zensiert? Wie wäres, wenn die Worte "frei" und "böse" auch zensiert würden, lol?) der instrumentellen Vernunft geworden sind (OOP ist eben nicht dem menschlichen Denken näher, sondern weit ferner als sequenzielle prozedurale Programmierung!).

Also man könnte vielleicht sagen, VisualC++ ist eine Abstraktion von C++.
(Abstraktion = Verallgemeinerung, Vereinfachung, Reduktion)

GreetZ RiDER :D :D :D

zao
13.08.2008, 12:32
@Rider

es handelt sich meiner Ansicht nach sehr wohl noch um C++. Jedoch nicht um natives C++. C++ wurde bereit von mehreren Softwarefirmen abgeändert, erweitert bzw modifiziert, so zB auch von Borland bzw Codegear. Es ist und bleibt C++ jedoch kein natives, da hast du recht.

@RaG3

Les das Buch ruhig zu Ende ich halte zwar auch nich viel von C++.Net oder Managed.C++, jedoch erklärt der Author die Grundlagen sehr gut. Du wirst danach nicht drum herum kommen, noch ein weiteres Buch anzuschaffen, oder eben mit Online Tutorials weiterzuarbeiten.

Grüße

-[RiDER]-
13.08.2008, 13:05
Hi :D

es handelt sich meiner Ansicht nach sehr wohl noch um C++.
Da trügt Dich Deine Ansicht leider.
C++ ist eine in ISO/IEC 14882:1998 spezifizierte Sprache. Und der VisualC++-Compiler entspricht nicht diesem Standard (sonst wäre z.B. VisualC++-Kode auch mit jedem anderen Compiler (z.B. mit dem C++-Builder von Borland) eins zu eins zu kompilieren, was bekanntermaßen nicht der Fall ist ;) ) und somit kann man die mit VisualC++ beschriebene Sprache nicht einfach mit C++ gleichsetzen. ;)

Vielleicht ist die Syntax gleich, aber das ist nicht, was eine Programmiersprache ausmacht (sonst könnte man auch sagen, HTML und XML seien die gleiche Sprache).

Schon wenn Du unter Windows den Header windows.h einbindest, programmierst Du nicht mehr in C++, sondern in irgendwas, was vielleicht Win32-C++ oder so heißt, was aber nicht mehr C++ ist, wie es in ISO/IEC 14882:1998 definiert wurde ;)

In diesem Sinne,
GreetZ RiDER :D

blackberry
13.08.2008, 13:08
es handelt sich meiner Ansicht nach sehr wohl noch um C++. Jedoch nicht um natives C++. C++ wurde bereit von mehreren Softwarefirmen abgeändert, erweitert bzw modifiziert, so zB auch von Borland bzw Codegear. Es ist und bleibt C++ jedoch kein natives, da hast du recht.

VC++ mag zwar Teile des ANSI-Standart unterstützen, aber meiner Meinung nach ist ein VC++ Programmierer auch nicht viel mehr als ein Visual Basic .NET Programmierer und wird (fast) nie ohne das IDE im Stande sein Code zu schreiben.
Letztendlich ist es bei einer Erweiterung auch interessant was das Resultat ist: eine dank dem .NET Framework nur auf Windows Kompatible Anwendung mit Übergröße (mit dem G++-Compiler bekomme ich ohne INCLUDE's 15 KB).
Meiner Meinung nach ist VC++ eine Rückentwicklung, die vielleicht sehr früh schon zu kleinen Erfolgen führen kann, aber danach nur noch zu Verzeiflung und Inkompatibilität.

zao
13.08.2008, 14:34
Meiner Meinung nach ist VC++ eine Rückentwicklung, die vielleicht sehr früh schon zu kleinen Erfolgen führen kann, aber danach nur noch zu Verzeiflung und Inkompatibilität.

Jain, VC++ ist mit sicherheit keine Rückentwicklung, sondern eher die CLR Anwendungen, darunter fallen auch Windows Forms die man mit damit erstellen kann. Genauso ist es möglich einfache Win32-Anwendungen zu schreiben, welche mit Sicherheit keine Rückentwicklungs sind.



Da trügt Dich Deine Ansicht leider.
C++ ist eine in ISO/IEC 14882:1998 spezifizierte Sprache. Und der VisualC++-Compiler entspricht nicht diesem Standard (sonst wäre z.B. VisualC++-Kode auch mit jedem anderen Compiler (z.B. mit dem C++-Builder von Borland) eins zu eins zu kompilieren, was bekanntermaßen nicht der Fall ist Winken ) und somit kann man die mit VisualC++ beschriebene Sprache nicht einfach mit C++ gleichsetzen. Winken

Vielleicht ist die Syntax gleich, aber das ist nicht, was eine Programmiersprache ausmacht (sonst könnte man auch sagen, HTML und XML seien die gleiche Sprache).

Schon wenn Du unter Windows den Header windows.h einbindest, programmierst Du nicht mehr in C++, sondern in irgendwas, was vielleicht Win32-C++ oder so heißt, was aber nicht mehr C++ ist, wie es in ISO/IEC 14882:1998 definiert wurde Winken

Das habe ich beim besten Willen nicht gewusst, dann muss ich mich wohl teilweise bei Staebchen entschuldigen, obwohl er das wahrscheinlich auch nicht gewusst hat... An der Syntax kann man jedenfalls erkennen, dass es sich um etwas C++ "Ähnliches" :lol: handelt.

Danke für die Infos ihr beiden

Grüße

l0dsb
13.08.2008, 15:25
Ich fände es mal interessant, eine Definition für VC++ zu finden, bin mir nun unsicher, was ich da dazu zählen soll - und was nicht. Ich verwende die MSVC-IDE und den entsprechenden Compiler, macht mich das zum VC++-Programmierer? Wohl kaum.

Ich programmiere plattformspezifisch unter Windows, nutze aber die reine WinApi mit der gewöhnlichen C++-Syntax. Als einzigste Ausnahme verwende ich gerne mal "#pragma comment", um Libs einzubinden, statt dies irgendwo in den tiefen der IDE zu machen. Also, wie definiert ihr VC++? MFC? .NET?

-[RiDER]-
13.08.2008, 17:10
Hi :D
Ich programmiere plattformspezifisch unter Windows, nutze aber die reine WinApi mit der gewöhnlichen C++-Syntax. Als einzigste Ausnahme verwende ich gerne mal "#pragma comment"
AFAIK ist die #pragma-Direktive Teil des Standards (zumindest ist es Teil des C99-Standards (siehe ISO/IEC 9899:1999 6.10.6) - aber der ist ja bekanntlich neuer als C++ ;) ). Wie der Compiler die entsprechende tokens behandelt, bleibt (fast vollständig) ihm überlassen ;)


Also, wie definiert ihr VC++? MFC? .NET?
Wenn es keinen bei der ISO (oder einer anderen anerkannten Normungsorganisation) eingetragenen Standard gibt, werden die Sprachen durch die Dokumentation und letztlich durch den Compiler definiert. ;)

GreetZ RiDER :D