c++ in windosfenstern darstellen



  • Hi Leute,
    ich hab mal ne frag, wie kann ich denn c++ in einem normalem windosfenster darstellen? Meine Programme werden immer in ms-dos fenstern angezeigt.
    😕



  • @mod nitte in WINAPI Forum geben

    wenn du weiterhin die ein int main() verwenden willst musst du Registerclassex() und CreatWindow() aufrufen. oder du startest mit Winmain()

    mfg





  • sorry, aber ich bin ein totaler noob, kannst du mir einen kurzen quellcode aufschreiben? 😕
    wie starte ich das? 😕



  • ich würd erst c++ lernen, bevor ich fenster mache.



  • ich wollte aber trotzdem gerne wissen wie das geht, ich will ja nichts kompliziertes machen.



  • es wurde dir ja in deinen anderen forenposts mit gleichem inhalt schon gezeigt 😉
    in c++ standard hat das nix zu suchen.



  • ich weiß, ich will es doch nur wissen



  • es wurde dir schon gesagt, siehe in den zwei threads im borland und mfc forum, die du parallel aufgemacht hast 😉



  • man ich wollte die nich parallel aufmachen, ich bin nur ins falsche forum gegangen und hab es dort aufgemacht.



  • michel_herke schrieb:

    man ich wollte die nich parallel aufmachen, ich bin nur ins falsche forum gegangen und hab es dort aufgemacht.

    ich bin kein 'man' *grins*
    und wollte es nur klarstellen, dass dieses forum, nämlich c++ standard, sich nicht um fensterprogrammierung kümmert 😉

    aber wie auch immer, deus hat im mfc forum einen link gepostet.

    cu



  • hat hier irgendein anderer einen quellcode dafür?



  • 1. c++ GRUNDwissen aneignen
    2. wissen anwenden
    3. wie arbeitet windows ? lernen!
    4. mfc- GRUNDwissen aneignen
    5. deine frage sparen -> jetzt kannst du es ja

    du kannst nicht als (wie du dich selbst betitelts) 'noob' anfangen mit winapi zu proggen => ohne c++ grundwissen wird das nichts



  • in c++ sicher nicht, aber in WINAPI kriegst du FENSTER 😉



  • michel_herke schrieb:

    hat hier irgendein anderer einen quellcode dafür?

    Toll nicht? So reden sie mit mir auch, wenn ich Fragen stelle.

    Zunächst einmal ist es interessant, welchen Compiler Du verwendest, genauer gesagt, mit welcher IDE schreibst Du Deine Programme?

    Mit hoher Wahrscheinlichkeit hast Du eine Variante von MS-Visual-C++. Dort gibt es einen Menüpunkt, der sich ungefähr anhört wie 'Neues Projekt erstellen'.
    Dann springt ein Dialogfenster auf, und fragt Dich zuerst, ob Du eine DLL, eine Konsolenanwendung, eine statische Bibliothek, oder, und das ist interessant für Dich, eine völlig normale Windows-Anwendung erstellen willst. Dann klickst Du nochmal auf Weiter, und früher oder später kommt dann ein Dialogfenster (in meinem Fall z.B. sofort nach der Einstellung des Projekttyps), das entweder 'Application Settings' oder (ich hab leider nur die Englische Variante), in einer Deutschen Variante so etwas wie 'Projekt-Einstellungen'.

    Stell dort auf jeden Fall für den Anfang 'Leeres Projekt' ein, denn sonst schummelt Dir der Anwendungs-Erstellungsassistent Header für Klassen dazu, die Dich nur verwirren. Wenn Du 'Leeres Projekt' wählst, hast Du die gewohnt leere Quellcodedatei vor Deiner Nase, die Du nach eigenem Ermessen verun- oder gestalten kannst, wie Du es bei DOS-Programmen auch immer gemacht hast.

    Ich bin übrigens einer der wenigen, die NICHT der Meinung sind, man MÜSSTE zuerst langweiliges Konsolen C++ lernen, um erst VIEL VIEL später mit der Windows-Programmierung anzufangen. Denn die beiden Sprachen, Konsolen-C++ und Windows-C++ sind derart unterschiedlich, dass Du damit praktisch zwei Sprachen lernst, also sinnloser Weise den doppelten Lernaufwand hast, als nötig, obwohl Dich ja nur die letztere interessiert.

    In Deinen Windows-Programmen musst Du oft (als Neuling immer) die Header-Datei
    <windows.h> #includieren.

    Anstelle von void main() oder int main(), das Du in der Konsolenanwendung verwendet hast, schreibst Du bei Windows einfach

    int WINAPI WinMain(HINSTANCE hinst, HINSTANCE phinst, LPSTR commline,
                       int showstyle){
    // Deine Anweisungen
    
    // nicht vergessen den Rückgabewert
    return 0; // später einmal schreibt man return msg.wParam, um genauer zu sein,
              // aber über return 0; beschwert sich das OS auch nie.
    }
    

    Wenn Du bei C++ für die Konsole mit einfachen Textausgaben angefangen haben solltest (etwa mit cout << oder printf()), so kriegst Du bei Windows am schnellsten mit der Funktion MessageBox(NULL,"Das was da stehen soll", "Das was in der Titelzeile des MessageBox Fensterchens stehen soll",0) Textausgabe auf den Bildschirm.

    Da, wo oben // Anweisungen gestanden ist, kannst Du gleich einmal Deine ersten MessageBox() Fensterchen mit Textausgabe auf den Bildschirm zaubern. Die sind zwar noch vergleichsweise bescheiden, aber printf() und cout << sind das ja ganz am Anfang des Konsolen-C++ genauso - sind aber keine Fenster, sondern Relikte aus der Urzeit - und Fenster wolltest Du ja haben.

    (So, und das ist der kompakteste Text, der mir eingefallen ist, einem C++ Neuling zu erklären, wie er Fenster auf den Bildschirm bringt.)

    - Trotzdem haben die anderen damit recht, wenn Du wirklich GAR keine Ahnung von den unbedingt nötigen Grundlagen (Zeiger, Klassen, Funktionen) hast, wird's nicht einfach, gleich in die Windows-Programmierung einzusteigen - aber ganz sicher nicht unmöglich!

    😃



  • aber printf() und cout << sind das ja ganz am Anfang des Konsolen-C++ genauso - sind aber keine Fenster, sondern Relikte aus der Urzeit

    printf ist C, und cout ist so unglaublich mächtig,sodass du es sogar unter verwendung eines selbst geschriebenen Buffers für textausgaben in beliebigen fenstern benutzen kannst(und cin kann man auch ähnlich an fenster anpassen), du kannst damit aber auch zb das schicken von daten über sockets vereinfachen, das ist alles kein problem wenn man sich mit der materie auskennt.

    Also sei vorsichtig, bevor du was in richtung relikt sagst



  • Geh mal auf http://www.wxWidgets.org und zieh dir dort die Library. Infos wie man mit wxWidgets programmiert findest du dort ebenfalls. Schau dich dort einfach mal genauer um, auch wenn du am Anfang erschlagen wirst und nur Bahnhof verstehst. Aber von nichts kommt nichts.

    Oben rechts gibts eine Introduction mit allgemeinen Infos. Und dann weiter unten "How to learn wxWidgets".



  • MecnelsDerAlteFuchs schrieb:

    Ich bin übrigens einer der wenigen, die NICHT der Meinung sind, man MÜSSTE zuerst langweiliges Konsolen C++ lernen, um erst VIEL VIEL später mit der Windows-Programmierung anzufangen. Denn die beiden Sprachen, Konsolen-C++ und Windows-C++ sind derart unterschiedlich, dass Du damit praktisch zwei Sprachen lernst, also sinnloser Weise den doppelten Lernaufwand hast, als nötig, obwohl Dich ja nur die letztere interessiert.

    langweiliges Konsolen C++? auch in der konsole kann c++ programmieren viel spaß machen. und grundlegende techniken sind unter einfacheren bedingungen viel besser zu lernen, als wenn man erst zwanzig verschiedene winapi-funktionen zum zeichnen von bildchen lernen muss. gut c++ programmieren kann auch bedeuten, grafische sachen gar nicht erst auszuprobieren, sondern diese sprachen zu überlassen, bei denen man sich leichter tut. dann kann man auch schon front- und backend trennen.
    und: wenn man sich einmal in komplexeren c++ "konsolencode" auskennt, hat man meistens keine probleme mehr, kann man nettere gui-bibliotheken, wie qt, wxwidgets etc besser verstehen und schneller bedienen. winapi-c++ artet oft in winapi-c+ aus.

    abgesehen davon dieses subforum dafür tatsächlich nicht das richtige gewesen. manch einer könnte sich hier ja mit fragen zu winapi belästigt fühlen, wenn er/sie windows gar nicht verwendet 😉

    Anstelle von void main() oder int main(), das Du in der Konsolenanwendung verwendet hast, schreibst Du bei Windows einfach

    hoffentlich nicht void main 😉

    Trotzdem haben die anderen damit recht, wenn Du wirklich GAR keine Ahnung von den unbedingt nötigen Grundlagen (Zeiger, Klassen, Funktionen) hast, wird's nicht einfach, gleich in die Windows-Programmierung einzusteigen - aber ganz sicher nicht unmöglich!

    jo.



  • MecnelsDerAlteFuchs schrieb:

    Ich bin übrigens einer der wenigen, die NICHT der Meinung sind, man MÜSSTE zuerst langweiliges Konsolen C++ lernen, um erst VIEL VIEL später mit der Windows-Programmierung anzufangen. Denn die beiden Sprachen, Konsolen-C++ und Windows-C++ sind derart unterschiedlich, dass Du damit praktisch zwei Sprachen lernst, also sinnloser Weise den doppelten Lernaufwand hast, als nötig, obwohl Dich ja nur die letztere interessiert.

    Schonmal was anderes benutzt als Windows? Oder anders gefragt: Kennst du überhaupt was anderes als Windows? Oder noch anders gefragt: Wann haben die dich ausgegraben. Und vor allem: Warum?



  • Ohje.... schrieb:

    MecnelsDerAlteFuchs schrieb:

    Ich bin übrigens einer der wenigen, die NICHT der Meinung sind, man MÜSSTE zuerst langweiliges Konsolen C++ lernen, um erst VIEL VIEL später mit der Windows-Programmierung anzufangen. Denn die beiden Sprachen, Konsolen-C++ und Windows-C++ sind derart unterschiedlich, dass Du damit praktisch zwei Sprachen lernst, also sinnloser Weise den doppelten Lernaufwand hast, als nötig, obwohl Dich ja nur die letztere interessiert.

    Schonmal was anderes benutzt als Windows? Oder anders gefragt: Kennst du überhaupt was anderes als Windows? Oder noch anders gefragt: Wann haben die dich ausgegraben. Und vor allem: Warum?

    Ja, zu meinem Pech wurde ich auch schon einmal für zwei Jahre vor einen Linux Rechner gesetzt.


Log in to reply