Ich blicke nun mal wieder nicht mehr ganz durch. Ich weiß nicht einmal mehr, was ich nun eigentlich lerne:
Ich wollte ursprünglich einfach nur c++ lernen. Habe dann aber nach einiger Zeit festegstellt, dass man nicht unbedingt in diesem DOS-Fenster programmieren MUSS. Man kann auch anders: Unds zwar mit einer API(ala WINAPI)
So, nun denk ich mir, ok, ich habe vorkenntnisse in c++ und verpasse dem jetzt noch ein schöneres Aussehen->NEIN!
Wie ich feststelle ist die API ja eine vollkommen andere Sprache. Ok, es gibt immernoch int, if-Verzweigungen, aber ansonsten ist fast alles anders?!
iostream-Befehle wie zum Beispiel cout, oder cin gehen schonmal nicht mehr. Das heißt, alles was ich vorher im DOS-Fenster geproggt habe kann ich schonmal wegschmeißen. Genauso wie das mir bisher angeeignete Wissen bezüglivh der Programmierung, da ja sowieso schon alles anders ist und ich im Prinzip für die selbe Funktion ein vollkommen anderes Programm schreiben müsste.
Allein schon der Anfang:
int WINAPI WinMain(....)
wieso nicht weiterhin:
int main(void)
?
war kürzer und verständlicher...
Ist die WinAPI denn nun eine eigene Sprache? Und als was kann man denn dann nun die Sprache c++ definieren? Ist c++ denn selber auch nur eine API für das DOS-Fenster?
Ich wollte ursprünglich einfach nur c++ lernen. Habe dann aber nach einiger Zeit festegstellt, dass man nicht unbedingt in diesem DOS-Fenster programmieren MUSS. Man kann auch anders: Unds zwar mit einer API(ala WINAPI)
So, nun denk ich mir, ok, ich habe vorkenntnisse in c++ und verpasse dem jetzt noch ein schöneres Aussehen->NEIN!
Wie ich feststelle ist die API ja eine vollkommen andere Sprache. Ok, es gibt immernoch int, if-Verzweigungen, aber ansonsten ist fast alles anders?!
iostream-Befehle wie zum Beispiel cout, oder cin gehen schonmal nicht mehr. Das heißt, alles was ich vorher im DOS-Fenster geproggt habe kann ich schonmal wegschmeißen. Genauso wie das mir bisher angeeignete Wissen bezüglivh der Programmierung, da ja sowieso schon alles anders ist und ich im Prinzip für die selbe Funktion ein vollkommen anderes Programm schreiben müsste.
Allein schon der Anfang:
int WINAPI WinMain(....)
wieso nicht weiterhin:
int main(void)
?
war kürzer und verständlicher...
Ist die WinAPI denn nun eine eigene Sprache? Und als was kann man denn dann nun die Sprache c++ definieren? Ist c++ denn selber auch nur eine API für das DOS-Fenster?
Du würfelst da ein paar Sachen kräftig durcheinander. Eine API (egal welche), hat nichts mit einer bestimmten Programmiersprache zu tun, sondern ist sowas wie ein Service-Center. Sie stellt Dir ein paar Funktionen zur Verfügung, welche Du von den meisten Programmiersprachen aus ansprechen kannst.
Nehmen wir mal die Windows-API her. In ihr sind so ziemlich alle Funktionen enthalten, um mit Fenstern, Speicher und allem anderen umzugehen, was Windows zu bieten hat. Jetzt kannst Du eine Sprache hernehmen (natürlich muss es nicht C++) sein und auf diese Funktionen zugreifen. Ein Beispiel für eine Funktion, ist das Erzeugen eines Fensters. Dazu rufst Du in Deinem C++ Programm einfach ein paar Methoden auf, welche in einer bestimmten Header Datei (in diesem Falle windows.h) Dir zur Verfügung stehen.
C++ hat auch nicht wirklich viel mit der DosBox zu tun. Du kannst auch ganz normale Fenster mit C++ machen. Dies geht jetzt nicht nur über die WinAPI, sondern es gibt noch viele andere Möglichkeiten (musst Du extra herunterladen). So ist es beispielsweise möglicht, dass Du ein Zeichenprogramm schreibst, welches nicht nur unter Windows geht, sondern auch unter Linux oder MacOS.
Dein C(++) Programm muss mit int main(...) beginnne, außer Du schreibst eine DLL oder ähnliches.
Nehmen wir mal die Windows-API her. In ihr sind so ziemlich alle Funktionen enthalten, um mit Fenstern, Speicher und allem anderen umzugehen, was Windows zu bieten hat. Jetzt kannst Du eine Sprache hernehmen (natürlich muss es nicht C++) sein und auf diese Funktionen zugreifen. Ein Beispiel für eine Funktion, ist das Erzeugen eines Fensters. Dazu rufst Du in Deinem C++ Programm einfach ein paar Methoden auf, welche in einer bestimmten Header Datei (in diesem Falle windows.h) Dir zur Verfügung stehen.
C++ hat auch nicht wirklich viel mit der DosBox zu tun. Du kannst auch ganz normale Fenster mit C++ machen. Dies geht jetzt nicht nur über die WinAPI, sondern es gibt noch viele andere Möglichkeiten (musst Du extra herunterladen). So ist es beispielsweise möglicht, dass Du ein Zeichenprogramm schreibst, welches nicht nur unter Windows geht, sondern auch unter Linux oder MacOS.
Dein C(++) Programm muss mit int main(...) beginnne, außer Du schreibst eine DLL oder ähnliches.
und was hat es dann mit int WINAPI WinMain() aufsich?
Muss ich das IN die int main(void)-Funktion reinmachen, oder wie?
Muss ich das IN die int main(void)-Funktion reinmachen, oder wie?
Da hab ich mich in der Sache getäuscht, was die main() angeht. In der Tat geht es, dass man nur eine WinMain() hat. Das Ganze läuft dann aber genau so, wie vorher, nur dass sich dann Windows noch ein paar Sachen intern speichert.
also mal ein Beispiel, dass mir Probleme bereitet:
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <tchar.h>
#define STRICT1
using namespace std;
int main(void)
{
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPI, LPSTR szCL, int CS);
cout << "blablabla";
long double Z1 = 5, Z2 = 10;
long double Z3 = Z1+Z2;
int Fenster = MessageBox(NULL, _T("Ergebnis: ")Z3, _T("Z3 sollte konvertiert werden um zusammen mit dem breits fertigem \"Ergebnis"\ im Fenster angezeigt zu werden"), MB_OK | MB_DEFBUTTON1);
//hier soll es dann nach dem drücken von OK weiter gehen.
if(IDOK == Fenster)
{
cout << "so solls sein!";
getch();
return 0;
}
Die Probleme:
Ich kann long double nicht in LPCSTR konvertieren und dann ZUSAMMEN mit dem "Ergebnis" darstellen.
Außerdem hatte ich vorhin mal beim Experimentieren festgestellt, dass NACH dem Fenster keine weiteren Befehle mehr ausgeführt werden...
Oder zumindest war es der Fall, als ich in einer switch-Verzweigung ein solches Fenster für case 1 erzeugt hatte...Die anderen cases wurden dann entweder übersprungen oder ohne Nachfrage einfach allesamt mit ausgeführt .
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <tchar.h>
#define STRICT1
using namespace std;
int main(void)
{
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPI, LPSTR szCL, int CS);
cout << "blablabla";
long double Z1 = 5, Z2 = 10;
long double Z3 = Z1+Z2;
int Fenster = MessageBox(NULL, _T("Ergebnis: ")Z3, _T("Z3 sollte konvertiert werden um zusammen mit dem breits fertigem \"Ergebnis"\ im Fenster angezeigt zu werden"), MB_OK | MB_DEFBUTTON1);
//hier soll es dann nach dem drücken von OK weiter gehen.
if(IDOK == Fenster)
{
cout << "so solls sein!";
getch();
return 0;
}
Die Probleme:
Ich kann long double nicht in LPCSTR konvertieren und dann ZUSAMMEN mit dem "Ergebnis" darstellen.
Außerdem hatte ich vorhin mal beim Experimentieren festgestellt, dass NACH dem Fenster keine weiteren Befehle mehr ausgeführt werden...
Oder zumindest war es der Fall, als ich in einer switch-Verzweigung ein solches Fenster für case 1 erzeugt hatte...Die anderen cases wurden dann entweder übersprungen oder ohne Nachfrage einfach allesamt mit ausgeführt .
Logge dich ein um einen Beitrag zu schreiben.