# Windows Anwendung schreiben



## Cora (13. Oktober 2003)

Hi, könnte mir mal jemand sagen wie ich am besten mit dev-c++ ein Fenster für eine Windows Anwendung erstellen kann? Dieses wxwindows hab ich schon ausprobiert aber dev-c++ macht ständig fehler wenn ich en wxwindows template kompilieren will. hätte jemand ne idee?


----------



## Sinac (13. Oktober 2003)

Du kannst dir doch einfach über "Datei"- "Neu->" "Projekt..."  "Windows Application" 
eins erstellen lassen, das läuft ja dann von ganze alleine -> Bei mir zumindest.

Aber ansonsten würde ich für den Anfang den BCB für Windows Apps vorziehen, wesentlich einfacher...

Greetz und wilkommen bei Tutorials.de
Sinac


----------



## Cora (14. Oktober 2003)

Also Ich bekomm ja schonmal so kleine Anwendungen für DOS hin die z.B. diverse Berechnungen durchführen. Was genau ist denn eigentlich der Unterschied zwischen C und C++, und was ist ISO C++? Was ich eigentlich wissen wollte ist wie Ich das Design für das Fenster erstellen kann. Und wo bekomme Ich dieses BCB?


----------



## Sinac (14. Oktober 2003)

C++ ist im Prinzip ne Erweiterung von C, kann also alles was C auch kann und noch etwas mehr. Zum Großteil ist das, das C++ Objektorientiert ist und mit Klassen arbeiten kann. C kennt zwar Strukturen aber halt keine Klassen, Vererbung, Polymorphy etc.

Haste irgendein brauchbares Buch über C/C++?
Das ist für den Anfang sehr sehr hilfreich!

Der BCB ist leider nicht Freeware, musste mal schaun wo du den kriegst (Wir dürfen ja nicht schreiben "Brenn dirs irgendwo!"  )
Vielleicht gibt auf http://www.borland.de ne Testversion oder so...

Greetz...
Sinac

Achja, alles gute zum Geburtstag


----------



## Tobiasm (14. Oktober 2003)

Hallo!

Also, erst einmal alles gute zum 19! Feier ordentlich ;-)

So, dann zu Deinem Problem:

Unter http://www.borland.com/products/downloads/download_cbuilder.html gibt es eine Testversion herunter zu laden.

Allerdings ist die Frage, ob Du, wenn Du nicht einmal den Unterschied zwischen C und C++ kennst, Du jetzt schon mal der Windows-Programmierung anfangen solltest oder aber erst einmal Dich noch ein wenig mit C++ an sich auseinander setzen solltest.

Dann zum Unterschied zwischen C und C++: C ist ein Progammiersprache, die funktional aufgebaut ist und deren Idee damit in ungefähr folgende ist: es gibt Daten und diese Daten werden zwischen Funktionen hin und her geschickt, die dann etwas mit den Daten machen (klingt sehr abstrakt, ich weiß). C++ ist eine aus C heraus entwickelte Sprache, in der zwar alles noch geht, was unter C ging, die aber trotzdem eine ganz andere Idee verkörpert, nämlich die, dass es Daten gibt und man auf diese Daten eine ganze Reihe an Operationen anwenden kann und diese werden zusammen mit den Daten definiert (ist die Basis-Idee hinter der so genannten Objektorientierung).

Dann noch zu ISO. ISO heißt nichts anderes als International Standard Organisation, die sich um internationale Standards kümmert. Da überall auf der Welt in C++ Programmiert wird, wurde irgendwann ein einheitlicher Standard vereinbart und vom ISO festgelegt, daher ISO-C++.

So, dann noch ein Tipp: solltest Du wirklich ernsthaft mit C++ anfangen wollen, dann würde ich Dir C++ - Einführung und professionelle Programmierung von Ulrich Breymann empfehlen, mit dem ich es auch gelernt habe.

MfG

Tobias


----------



## Cora (15. Oktober 2003)

So, hab jetzt den Visual C++ 5.0 bekommen, soll zwar nicht der allerneueste sein aber er wird reichen. Ein bißchen Erfahrung hab Ich ja schon mit C, nur halt nicht mit der Windowsprogrammierung. Jetzt stellt sich mir aber die Frage was Ich unter "Objektorientiertes programmieren" und "Klassen" verstehen soll. Könnte mir das mal jemand so erklären daß Ich das auch verstehe?


----------



## Tobiasm (15. Oktober 2003)

Hm, das wird jetzt schwer ... (nein, nicht weil ich Dich zu blöd halte, sondern weil es so komplex ist)...

Also, hinter der Objektorientierten Programmierung stehen gleich eine ganze Reihe an Ideen, die ich hier mal probiere möglichst anschaulich darstellen möchte.

Instanzierung: es gibt Instanzen von Klassen, die Objekte genannt werden. Klassen kann man sich quasi als Vorlagen vorstellen, in denen beschrieben ist, wie ein Objekt aufgebaut ist, während die Objekte dann wirklich das sind, was im Arbeitsspeicher ist und mit denen gearbeitet wird. Dient dazu, dass man eben nicht alle Objekte, die man oft braucht einzelnd programmieren muss (also z.B. bei 1000 Einheiten in einem Spiel nicht jede Einheit extra sondern man nimmt eben die Klasse EInheit und machen Instanzen (Objekte) von ihr.

Kapselung: jede Klasse hat private Daten und Methoden, die nicht von außerhalb des Objekts angesprochen werden können und öffentliche Daten und Methoden, die auch von außerhalb der Klasse angesprochen werden können. Beispiel: Das Treten des Gaspedals ist qausi eine öffentliche Methode des Objekts Auto. Dagegen wäre das Einspritzen des Benzin-Luftgemisches eine private Methode, da man sie nicht direkt von außen Ausführen kann sondern eben das Gaspedal drücken muss.  Für Daten gillt dann ähnliches, nur dass hier der Tacho z.B. ein öffentliches Datum wäre, während z.B. diverse Systemdiagnose-Ergebnisse dann eher private Daten währen. Dient dazu, um zu kontrollieren, dass jeder Programmteil auch nur auf den Teil zugreift, auf den es darf. Falls Du jetzt sagt, dass es das nicht gibt, dann frag mal bei der ESA nach - die haben wegen einem sollchen Fehler ihre erste Ariane 5 verloren.

Vererbung: Vererbung ist eine art Spezialisierung der Klassen. Man könnte z.B. die Klasse Säugetier nehmen und von ihr Huns und Katze ableiten: beide sind Säugetiere, aber eben spezielle. Hat den Vorteil, dass man den ganzen Code aus der Basisklasse (hier Säugetier) nicht noch einmal in den abgeleiteten Klassen neu schreiben muss sondern ihn einfach weiter nutzt.

Polymorphismus: Ist ganz ähnlich wie Vererbung, nur dient es einem anderen Zweck, nämlich um die abgeleiteten Klassen auf eine gemeinsamen Ursprung zurück zu führen. Will man z.B. auf alle Fenster eine bestimmte Methode ausführen (z.B. alle minimieren) und es aber Fenster währen von einem Unterschiedlichen Typ und währen nicht auf einen bestimmen Typ (= Klasse) zurück zu führen, dann käme man echt ins schwitzen. So führt man einfach alle Fenster auf einen Typ zurück und kann sich nun sicher sein, dass sie alle diese eine Methode zum minimieren unterstützen.

So, jetzt hoffe ich mal, dass das hilfreich war... bei Fragen, schreib doch einfah über ICQ: 140466789

MfG

Tobias


----------



## Sinac (15. Oktober 2003)

Also ich würd mir da echt ein paar Bücher drüber kaufen, denn OOP ist echt schwer zu verstehn, da
hab ich bald länger für gebraucht als für den Sinn von Zeigern...
Vielleicht sollteste aber echt in wenig warte mit GUIs, lieber erstmal alle Grundlagen.
Schau dir sonst mal die OOP Tutorials von Lirion... achne Darion Linsky - glaub ich heißt er - an, die sind
ziemlich verständlich.

Was haste denn bis jetzt so gemacht in C /C++?

Greetz...
Sinac

//Off Topic:
Ich kenn kein einziges Mädel das programmiert


----------



## Cora (16. Oktober 2003)

Also Ich frag mich was eigentlich hinter der Idee öffentlicher und privater Variablen bzw. Daten steckt. Ich meine wenn ich eine Funktion habe in der Daten über eine Variable A ausgetauscht werden und Berechnungen über eine Variable B durchgeführt werden, diese aber nicht verändert werden soll, dann ändert man sie eben nicht. Wo liegt denn da eigentlich der Sinn der privaten Variablen


----------



## Tobiasm (16. Oktober 2003)

> _Original geschrieben von Sinac _
> *
> //Off Topic:
> Ich kenn kein einziges Mädel das programmiert  *



Doch da gibt es schon einige, teilweise sogar sehr gute... z.B. Melanie Schmidt. Hat schon den Bundeswettbewerb in Informatik gewonnen und bei der Central European Olympiad in Informatics (vergleichbar mit einer A-Jugend-EM) eine Bronze-Medallie gewonnen. Da muss man erst einmal hin kommen...

So, dann zu Cora:

Also, in der Theorie stimmt das schon, und es funktioniert bei 100 Zeilen, bei 1000 Zeilen und vielleicht auch noch bei 10.000 Zeilen aber dann ist Schicht im Schacht... erst recht, wenn nicht alles am Stück geschrieben wird sondern immer in Abschnitten. Außerdem kann man dadurch einzelne Komponenten austauschen, ohne dass es Auswirkungen auf den Rest des Programms hat, so lange sie sich nach außen hin verhalten, wie die alte Komponente, weil man sicher sein kann, dass die Variablen nicht von anderen Programmteilen angesprochen werden können.

MfG

Tobias


----------



## Cora (16. Oktober 2003)

Ich denk mal MFC wird das richtige für mich sein, jedenfalls ist Windowsprogrammierung irgendwie viel komplexer als wenn man in Dos prgorammiert.


----------



## Mythos007 (16. Oktober 2003)

//offtopicmode = on

@ Cora - bist Du das auf Deinem Avatar?  

//offtopicmode = off


----------



## Tobiasm (16. Oktober 2003)

@ Cora: IMHO sollte man nicht mit den MFC anfangen, weil sie schon eine ganze Menge an Verständnis für OOP erfordern und außerdem doch schon relativ komplex sind. Ich würde Dir empfehlen doch erst noch etwas zu "üben" und zwar mit Konsolenprogrammen.

Unter http://www.bwinf.de findest Du z.B. die Aufgaben des aktuellen BWInf. Da kannst Du Dich z.B. mal dran probieren!

Ansonsten würde ich mir an Deiner auf jeden Fall noch ein Tutorial zum Thema OOP durchlesen oder noch besser ein Buch, weil das mehr als nur wichtig ist, diese Technik zu kennen.

MfG

Tobias


----------



## Cora (16. Oktober 2003)

Sollte ich lieber mit der winapi anfangen um ganz einfache Fenster zu erstellen?
Oder meinst du dass Ich mich allgemein noch nicht direkt mit der Windowsprogrammierung beschäftigen sollte?

@Mythos007: könnte Ich das denn auf dem Avatar sein? *fg*


----------



## Tobiasm (16. Oktober 2003)

Cora hat gesagt.:
			
		

> Sollte ich lieber mit der winapi anfangen um ganz einfache Fenster zu erstellen?
> Oder meinst du dass Ich mich allgemein noch nicht direkt mit der Windowsprogrammierung beschäftigen sollte?



Ich meine letzteres.. Der Grund is folgender: um mit einer doch relativ komplexen API eines Betriebssystems zu programmieren sollte man schon eine gewisse Erfahrung haben und bestimmte Konzepte kennen. Meinem Eindruck nach (der abder nicht stimmen muss!) solltest Du erst noch ein wenig daran arbeiten, sonst ist die Gefahr sehr groß, dass Du hilflos überfordert wirst und dich irgendwann wieder genervt abwendest (ist zumindest bei sehr vielen so).



			
				Cora hat gesagt.:
			
		

> @Mythos007: könnte Ich das denn auf dem Avatar sein? *fg*



Hm, ich glaube das ist irgendso eine Schauspielerin, ich glaube die spielt in einer Serie 'ne Hexe oder so.. stimmt das ?

MfG

Tobias


----------



## Cora (16. Oktober 2003)

So, hab erstmal ein neues Bild raufgeladen, mit ein bißchen mehr Grinsen im Gesicht *gg* Ich kenne jedenfalls keine Serie in der eine Schauspielerin die so aussieht eine Hexe spielt 

Also was genau sollte Ich so in Dos programmieren können damit Ich mich der Windowsprogrammierung widmen kann?


----------



## Mythos007 (16. Oktober 2003)

@Cora - wenn Du es bist - dann hoffe ich dass Du weißt,
dass Du schon sehr sexy ausschaust


----------



## Thomas Lindner (17. Oktober 2003)

Des Rätsels Lösung:

Serie: Sabrina - total verhext
Schauspilerin: Melissa Joan Hart

Quelle/Beispiel: http://www.melissa-joan-hart.com/gallery.phtml?nr=41&site=11


----------



## tuxracer (17. Oktober 2003)

@Cora

Falls Du nicht aufs Windows Programmieren verzichten willst, und trotzdem nix wissen willst von der Programmierung des Fensters selbsdt, dann Programmier Visual C++, da wird Dir der Rahmen schon gesetzt, und alles was Du noch programmieren musst ist der Inhalt des Fensters.


----------



## Sinac (17. Oktober 2003)

Hehe, ist echt ne ähnlichkeit, aber könnte auch wirkilich sie sein *grübel*

Also mit dem BCB is Windowprogrammierung echt kinderleicht, da reichen wenige Grundlagen in C++ um was vernünftiges hinzukrige, du musst ja die Oberfläche nur hinklicken und die Eigenschaften anpassen.
Was allerdings richtig Dreck ist, ist dass die Komponenten noch aus Delphi sind und das ist ja...naja, ihr wisst schon. 
Hoffentlich wird das mit dem C++ Builder X besser...

Aber es ist schon schöner als Konsole und man lernt auch viel.

Allerdings ist danach der Umstieg auf die WinApi oder MFC dann etwas aktig...

Zum Glück hab ich solche Probleme mit "welche GUI nehm ich", Gott schütze Linux und die gute alte Konsole 

Greetz und n schönes WE!
Sinac


----------



## Cora (17. Oktober 2003)

Ihr findet dass das mein Bild Ähnlichkeit mit Melissa Joan Hart hat
Also ich mag diese Schauspielerin jedenfalls nicht *gg*

Ich meine Ich könnte ja auch en Beispielprogramm auf der Festplatte speichern und die C-Datei immer als Referenz nehmen, oder sollte Ich das alles im Kopf haben wie man ein Fenster "from scratch" programmiert?


----------



## Tobiasm (17. Oktober 2003)

@ tuxracer : Hä? Was soll das denn, das ist doch Müll... das macht nicht einmal in sich Sinn.

@Cora: Klar, mit dem BCB kann man sehr einfach und schnell Windows-Anwendungen mit C(++) erstellen, auch ohne überhaupt zu Wissen, WIE man ein Fenster programmiert. Die Frage ist allerdings, was Du willst. Wenn Du von dieser Seite an die Programmierung heran gehst, dann hast Du zwar relativ schnell Ergebnisse, die aber nicht sehr ausbaufähig sind, weil Du dann einfach zu große Lücken in Deinem Wissen hast, z.B. wie man Programme und Daten organisiert.

Daher würde ich folgendes vorschlagen: Du lernst noch einmal etwas auf der Konsolte C++,  indem  Du einfach probierst verschiedene Sachen zu programmieren (hier noch mal der Verweis auf den BWInf - http://www.bwinf.de ).

Dieser Weg ist zwar nicht so toll, wie der andere mit dem BCB (juchu, ich habe eine Fenster, dass ich auf zehn verschiedene Arten bunt einfärben kann), aber bringt langfistig mehr.

MfG

Tobias

PS: Mein angebot, dass Du mich mal über ICQ ansprechen kannst, gillt immer noch.

PPS: Auf dem Bild siehst Du Melissa Joan Hart wirklich ähnlich - nur eben ein wenig besser.


----------



## Cora (17. Oktober 2003)

Okee, na dann werde Ich erstmal sehen dass ich nochwas in Dos mache und die gesamten Befehle kennenlerne und dann geh' Ich mal in Richtung Windows.

Immer diese Kommentare über mein Bild, hätte wohl keins raufladen sollen


----------



## Tobiasm (17. Oktober 2003)

Jaja - immer diese Kommentare zu Deinem Bild  ...

Aber gut, dann viel Spaß beim Programmieren!


----------



## tuxracer (20. Oktober 2003)

@ Tobiasm

1. was soll keinen Sinn machen?
wenn ich die Grafikschnittstelle auch noch selbst programmieren muss, dann lerne ich zwar ganz sicher besser programmieren, aber da es ja Visual C++ gibt, da ist das Fenster schon gegeben( ganz einfach realisierbar, für den Super DAU).
Na ja fast ganz einfach, aber immerhin.
ansonsten wüsste ich gern was keinen Sinn macht.darfst mich auch gerne PN anschreiben.

2. hab mich auch schon gefragt, was das mit den Bemerkungen zum Bildchen soll.


----------



## Tobiasm (25. Oktober 2003)

Erst einmal entschuldigung, dass ich nicht früher geantwortet habe - ich war nicht zu Hause und konnte auch nicht an einen PC, daher erst jetzt die Antwort.

Also, zu erstens)

Du meinst sicher die MFC unter Windows, mit denen man die Fenster programmieren soll. Allerdings halte ich das für ein sehr zweischneidiges Schwert weil 

1) sind die MFC nur auf den ersten Blick einfach. Sicher, man läßt sich vom Assistenten etwas erstellen und schon kann man durch einen Doppelklick auf jedes Steuerelement eine Ereignisprozedur erzeugen, in die man dann den entsprechenden Code schreibt. Aber so lange man nicht die Techniken dahinter versteht, scheitert man auf jeden Fall bei komplexeren Anwedungen und bleibt schlicht und ergereifend auf einem relativ niedrigen Niveau stehen oder arbeitet sich nur sehr langsam "nach oben". Ein einfaches Beispiel für MFC-Code ist folgendes:


```
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
END_MESSAGE_MAP()
```

Das soll ein Anfänger verstehen? Und das findet sich immer und überall. Dann wäre da noch die Klassenstruktur der MFC aber das spar ich mir jetzt einfach mal.

2) Die MFC fördern einen schlechten Programmier-Stil, was wiederrum dazu führen kann, dass man bei größeren Projekten oder auch nur bei etwas älteren Programmen, die man sich mal wieder ansehen möchte, Probleme kriegt, weil man nicht mehr durch den Code durchsteigt. Warum fördern sie den schlechten Programmier-Stil? Der Grund ist ein an sich ganz einfacher: man muss sich in ein schon bestehendes Framework einfügen und seinen Programmierstil daran anpassen. Das Framework ist aber nun nicht darauf ausgelegt, dass man einen guten programmierstil entwickelt, sondern viel mehr darauf, dass man schnell Anwedungen entwickeln kann (RAD) und alle MFC-Versionen bis weiß der Geier noch unterstützt werden. Wenn man dagegen erst einmal eigene "Gehversuche" mit Klassen macht, kann man die Vor- und Nachteile einzelner Techniken (Vererbung, Polymorphie, Aggregation usw.) wesentlich besser nachvollziehen und schleppt nicht von Anfang an den "MFC-Overhead" mit sich rum.

So, und jetzt noch zu zweitens:

Was meine Kommentare angeht, war es das erste Mal simples Raten, was für ein Bild das ist und und die letzten beiden Male waren es einfach lustige Kommentare um den Thread ein wenig auszulockern (also nichts ernstes).

MFG

Tobias


----------

