WinAPI anfänger bringt fenster nicht zum Erscheinen



  • Hmm sorry ich geb es ja zu. So wie ich den Code gepostet hab, sollte es nicht so sinnig sein das TEXT bzw _T Makro zu nutzen, da die WinMain sich ja nicht anpasst. Sorry. Musst du ändern ^^



  • DrPhil_Guth schrieb:

    Gut, mal abgesehen von den Datentypen, was genau ist ANSCII ???

    Vermutlich aus Halbwissen entstandener Unfug.

    DrPhil_Guth schrieb:

    Also Is klar, dass man strings lieber außerhalb lagern sollte, allerdings ist mir das für ein einfaches Hello World programm zu umständlich. Als ersatz schreib ich einfach die String- Literale irgendwo oben hin.

    Klar, daß man das in einem Programm dieses Umfangs nicht macht. Ich schrieb das nur, weil jemand behauptete, solche Stringliterale im Code seien guter Programmierstil 😉

    DrPhil_Guth schrieb:

    Ne allgemeine Frage: Wo kann finde ich denn eigentlich solche "Stilrichtlinien"?

    Insbesondere durch Erfahrungen, die du während des Lesens und Bewertens diverser Dokumentationen und Bücher und der Quelltexte anderer gewinnst. Es gibt viele gute, aber unterschiedliche Stile, nur über Dinge, die man nicht tun sollte, herscht weitläufige Einigkeit. Deinen eigenen Stil mußt du freilich selbst finden.
    Ein paar grundsätzliche Dinge, auf die du vielleicht achten solltest:
    - vermeide globale Variablen
    - kommentiere unübersichtliche Stellen eindeutig
    - schreibe Funktionen reentrant
    - gestalte dein Programm modular. Lagere Funktionalitäten in eigene Funktionen/Klassen/Module aus
    - schreibe dein Programm, wo immer es sinnvoll sein kann, plattform- und compilerunabhängig
    - wenn du die Wahl zwischen einer einfachen, unschönen und einer komplexeren, aber saubereren, erweiterbareren, abstrakteren Lösung hast, nimm letztere

    Für C++-Programmierer noch ein paar weitere Ratschläge:
    - vermeide Makros
    - verwende die Standard-Library und die STL, wann immer es sinnvoll ist
    - verstehe Zweck und Verwendung von Konzepten wie Polymorphie, generischer Programmierung, Template-Metaprogrammierung etc.
    - entwirf mit diesen Kenntnissen für größere Projekte ein Klassenmodell, das einen erweiterbaren, flexiblen, objektorientierten Lösungsansatz darstellt
    - lies Scott Meyers
    - glaube niemals, C++ ganz verstanden zu haben

    ...



  • audacia schrieb:

    Insbesondere durch Erfahrungen, die du während des Lesens und Bewertens diverser Dokumentationen und Bücher und der Quelltexte anderer gewinnst. Es gibt viele gute, aber unterschiedliche Stile, nur über Dinge, die man nicht tun sollte, herscht weitläufige Einigkeit. Deinen eigenen Stil mußt du freilich selbst finden.
    Ein paar grundsätzliche Dinge, auf die du vielleicht achten solltest:
    - vermeide globale Variablen

    Es lässt sicht oft nicht vermeiden. (1)

    - vermeide Makros

    (2)

    - verwende die Standard-Library und die STL, wann immer es sinnvoll ist

    - <vector> ist ein aufgeblähtes Ungetüm mit redundanter Funktionalität hoch 10.
    Manchmal ist weniger mehr. (3)

    - glaube niemals, C++ ganz verstanden zu haben
    ...

    Uneingeschränkte Zustimmung

    Nachsatz:
    Alle Sprachmittel haben ihre Berechtigung, je nach Aufgabenstellung.
    Das gilt speziell auch für globale Variablen und #defines.
    Es ist nicht klug, sich selbst aus Prinzip den Einsatz von Sprachmitteln zu verbieten. Vielmehr sollte man immer alle Möglichkeiten ausschöpfen, die es gibt. Wer keine #defines haben will, kann auch Java verwenden.
    mfg



  • audacia schrieb:

    DrPhil_Guth schrieb:

    Gut, mal abgesehen von den Datentypen, was genau ist ANSCII ???

    Vermutlich aus Halbwissen entstandener Unfug.

    Tut mir leid, ich bin nur ein Mensch...ich werde mich in Zukunft nicht mehr verschreiben, damit der/die Herr/in mit mir in vollster Weise zufrieden ist 🙄

    Mfg Ominion



  • Danke für eure Antwort Leute! Vielen dank für die Hilfe zum konkreten Problem, das hat mir sehr geholfen. Mittlerweile ist die Verwirrung in der WinAPI- Welt nicht mehr ganz so groß 🙄.
    Auch danke für die Tipps zum allgemeinen Sprachgebrauch, davon werd ich mir ein paar dinge abschauen.

    Thx leute!

    mfg, DrPhil_Guth



  • @Kritiker4:
    Du kannst - wie ich aus Deinem Post schließe - KEIN C++ oder ? 😃



  • Kritiker4 schrieb:

    - vermeide globale Variablen

    Es lässt sicht oft nicht vermeiden. (1)

    Das kommt drauf an. Zumindest mit dem Windows-API läßt es sich praktisch immer vermeiden. Ausnahmefälle wie z.B. Shared Memory in DLLs natürlich außen vor gelassen.

    Alle Sprachmittel haben ihre Berechtigung, je nach Aufgabenstellung.
    Das gilt speziell auch für globale Variablen und #defines.

    Nicht wenige, z.B. die hier genannten, haben ihre wesentliche Berechtigung in der Unterstützung von C.

    Es ist nicht klug, sich selbst aus Prinzip den Einsatz von Sprachmitteln zu verbieten. Vielmehr sollte man immer alle Möglichkeiten ausschöpfen, die es gibt.

    Klar. Aber was meinst du, warum von manchen Dingen gesagt wird, man solle sie nicht mehr verwenden? Weil es bessere Alternativen gibt!

    Wer keine #defines haben will, kann auch Java verwenden.

    Das war hoffentlich nicht ernst gemeint, oder? Sonst ziehe ich deine Fachkompetenz doch etwas in Zweifel.

    Ominion schrieb:

    Tut mir leid, ich bin nur ein Mensch...ich werde mich in Zukunft nicht mehr verschreiben, damit der/die Herr/in mit mir in vollster Weise zufrieden ist 🙄

    Das mit dem Halbwissen bezog sich weniger auf den Schreibfehler. Ich meinte insbesondere diesen Satz, in dem du, deiner Sache offenbar sicher, meiner Vermutung nach aus besagtem Halbwissen erwachsenen Unfug behauptetest:

    Ominion schrieb:

    Also _T () ist nur ein Makro von TEXT (""). TEXT ("") wandelt einen String in ANSCII um, und wird immermehr als guter Programmierstil angesehen



  • Also _T () ist nur ein Makro von TEXT ("")

    Hab jetzt nicht nachgeguckt ob dieser Irrtum schon beseitigt wurde... aber das stimmt so nicht. _T(x) ist ein eigenes Makro in tchar.h und macht von der Funktionalität zwar das selbe wie TEXT(x), ist aber nicht von diesem in irgendeiner Weise abhängig. Hab jetzt nicht nachgeguckt... aber _T(x) müsste höchstens von __T(x) abhängig sein 😉



  • DrPhil_Guth schrieb:

    Danke euch beiden!
    Jetzt Hab ich endlich wenigstens eine Rückgabe, und das fenster lässt sich auch schließen, nur den Prozess muss ich mit Strg - Alt - Entf beenden 🙂

    while (GetMessage(&msg, NULL, 0, 0)) {/*...*/}
    

    AFAIK.



  • Jo, hab ich auch gefunden.
    Hatte nämlich früher nur die Nachrichten für das Hauptfenster abgefangen, was dann natürlich blöd ist, wenn man keins mehr hat 😃 -> Gab dann ne endlosschleife, die dann jeweils 50 % der Prozessoleistung meiner beiden Kerne verbauchte 🙂


Anmelden zum Antworten