Was in Dreiteufelsnamen hat sich Micorsoft dabei gedacht?



  • knivil schrieb:

    Wenn du C++ "gelernt" hast, solltest du dich auch in C zurechtfinden, ist naemlich 'ne Untermenge (fast).

    Das kommt natürlich drauf an, wo man C++ gelernt hat. Wenn der Dozent/Autor der Meinung ist, C habe nichts mit C++ zu tun, und entsprechend alles Lowlevel-Zeugs wegläßt, hilft dir das nichts 😉



  • _matze schrieb:

    .......... schrieb:

    Ausserdem ist [die MSDN] zumindest in meiner Express Version) sehr schlecht und lückenhaft, weshalb ich keine gute Meinung von eben dieser habe.

    Und genau das musst du erstmal beweisen. Das sehe ich nämlich nicht so. Du findest dort eine umfassende <edit>und vollständige</edit> Funktionsreferenz, mit der man eigentlich sehr gut arbeiten kann. Und die ganzen Artikel sehe ich nur als zusäzliche Dreingabe, was eine sehr schnöne Sache ist. Aber es ist natürlich kein Ersatz für ein gutes Buch (und auch nicht so gedacht). Ich habe so den Eindruck, dass du das annimmst.

    Jetzt mal ehrlich, ich habe nur schlechte Erfahrungen mit der MSDN gemacht. Beispiel: Ich versuche, herauszufinden, wie ... die Parameter der Funktion <CreateWindowEx()> arbeiten. Ich gebe den Namen der Funktion ein, keine Ergebnisse. Ich variiere das Schlüsselwort, ein Treffer. Ich gehe drauf, und dann erscheint im Textfenster, dass aus irgendeinem nicht näher definierten Grund der Eintrag nicht gefunden werden kann, oder, was noch schöner ist, dass ich auf ein völlig anderes Thema verwiesen werde.

    Nur, damit wir uns nicht falsch verstehen: ich habe nichts gegen Mircosoft, und die Hilfe früherer Versionen von Visual C++ war sogar richtig gut (auch, wenn es nur 8.0 war). Aber was ich da auf meinem PC habe, ist Mist.



  • Und nun erkläre mir, warum ich nicht programmieren sollte.

    Es hat nichts mit Zeit, Alter oder so zu tun. Du bist einfach zu emotional (bzw. sauer auf "den Mist auf deinem Rechner" oder (schlechte) Buecher. Ausserdem wuerde ich beim Lernen DLLs sehr weit nach hinten verschieben.



  • .......... schrieb:

    Jetzt mal ehrlich, ich habe nur schlechte Erfahrungen mit der MSDN gemacht. Beispiel: Ich versuche, herauszufinden, wie ... die Parameter der Funktion <CreateWindowEx()> arbeiten. Ich gebe den Namen der Funktion ein, keine Ergebnisse. Ich variiere das Schlüsselwort, ein Treffer. Ich gehe drauf, und dann erscheint im Textfenster, dass aus irgendeinem nicht näher definierten Grund der Eintrag nicht gefunden werden kann, oder, was noch schöner ist, dass ich auf ein völlig anderes Thema verwiesen werde.

    Dafür gibt es den Index (Strg+Alt+F2). Einfach 'CreateWindowEx' eingeben und schon kann man sich die Funktionsbeschreibung samt Parameter ansehen.



  • knivil schrieb:

    Und nun erkläre mir, warum ich nicht programmieren sollte.

    Es hat nichts mit Zeit, Alter oder so zu tun. Du bist einfach zu emotional (bzw. sauer auf "den Mist auf deinem Rechner" oder (schlechte) Buecher. Ausserdem wuerde ich beim Lernen DLLs sehr weit nach hinten verschieben.

    Wärst du auch, wenn du das erlebt hättest, was ich mit meinem PC erlebt habe, ich könnte Geschichten erzählen...
    Danke für den Tipp, DLL erst mal zu ignorieren, ich habe mir nämlich schon Sorgen gemacht, ob ich den Anschluss verpasse.
    Aber wie dem auch sei, ich habe noch ein paar offene Fragen am Anfang stehen, und die brennen mir besonders unter den Nägeln.


  • Administrator

    .......... schrieb:

    Jetzt mal ehrlich, ich habe nur schlechte Erfahrungen mit der MSDN gemacht. Beispiel: Ich versuche, herauszufinden, wie ... die Parameter der Funktion <CreateWindowEx()> arbeiten. Ich gebe den Namen der Funktion ein, keine Ergebnisse. Ich variiere das Schlüsselwort, ein Treffer. Ich gehe drauf, und dann erscheint im Textfenster, dass aus irgendeinem nicht näher definierten Grund der Eintrag nicht gefunden werden kann, oder, was noch schöner ist, dass ich auf ein völlig anderes Thema verwiesen werde.

    Was hat die schlechte Suche der Online-MSDN mit der möglichen Hilfestellung zu tun?
    Tipp: Nimm nicht die MSDN Suche, sondern verwende z.B. Google und füge einfach noch MSDN hintendran oder schränke über "site:" die Suche auf die MSDN ein. Für dein Beispiel:
    http://www.google.ch/search?hl=de&q=CreateWindowEx+MSDN&btnG=Google-Suche&meta=

    Erstes Ergebnis:
    http://msdn.microsoft.com/en-us/library/ms632680(VS.85).aspx

    Und du hast eine perfekte Beschreibung, besser kann man es sich gar nicht wünschen.

    Und ansonsten, lade das Ding herunter:
    http://www.microsoft.com/germany/Express/download/msdn.aspx

    Und verwende dann den Microsoft Document Explorer, der sollte mitgeliefert werden. Und schon findet man alles, was man braucht. Es ist immer auch eine Frage, wie man sich selber anstellt.

    Grüssli



  • Ich verwende immer die lokale Hilfe, und zwar über den Index. Das funktioniert einwandfrei. Auch im Code die Funktion anwählen und F1 drücken funktioniert sauber. Die einzige Ausnahme ist, wenn die Hilfe noch nicht geladen wurde ("wurde nicht gefunden...". Das ist einmal pro Session (also im Normalfall einmal pro Tag) und absolut zu verschmerzen (und kostet höchstens 2 Sekunden meiner Zeit).



  • 1.Warum gibt es 4 Definierungen für <__stdcall>? Ich habe vier gefunden, nämlich: <CALLBACK>, <WINAPI>, <APIENTRY> und <APIPRIVATE>. WARUM? <__stdcall> reicht doch völlig.

    Das sind vier verschiedene Rollen, an denen eine Funktion verwendet wird. Die können die gleiche Aufrufkonvention haben, müssen aber nicht. Du hast rausgefunden, das sie auf deiner Plattform alle __stdcall sind. Schön für Dich.

    2.Was ist überhaupt der Unterschied zwischen __sdtcall und _sdtcall? Was gewirkt der fehlende Strich? Und wenn wir schon einmal dabei sind, das gleiche für __forceinline & _forceinline und für __asm & _asm.

    Verschiedene Compiler, verscheidene regeln für reservierte Symbole. hab' ich mich nie tiefer mit beschäftigt - aber du kannst dir ja die C und die C++ - Regeln für vom Compiler reservierte Symbole und dann die Handbücher aller Compiler angucken, die von Win32 jemals unterstützt wurden.

    3.Jau, was bewirkten überhaupt diese sinnlosen Definitionen? Beispiel:

    near und far stammen aus 16 bit - Zeiten mit segmentiertem Speichermodell, als "kleine" Zeiger 16 bit groß aber auf ein 64K Datensegment begrenzt waren, große Zeiger 32 bit aber deutlich teurer in der Anwendung. Sei froh, daß wir das für 64bit nicht wieder so bekommen, und statt dessen mit DWORD_PTR und Konsorten rumhantieren.

    4.Meiner Meinung nach der absoulute Hammer: In Windows wird für ein <bool>, dass ein Byte Speicher verbraucht

    der eingebaute Typ bool ist erst neueren Datums, viele von WinAPI unterstützte Compiler kannten den gar nicht. char hat den Nachteil, daß er bei bestimmten vergleichen erst automatisch auf int erweitert werden muß, und damit versteckt zu zusätzlichem Code führt. int ist da einfach "gutmütiger".

    Wenn du richtig Spaß haben möchtest: guck' Dir VARIANT_BOOL, VARIANT_TRUE, VARIANT_FALSE und S_OK / S_FALSE an...

    1.Wie schaffe ich es, das "nächste Zeile"-

    Mit textout - IIRC- gar nicht. DrawText müßte das aber können.

    2.Was macht die Funktion <UpdateWindows()>?

    UpdateWindow()? Erzwingt eine sofortige WM_PAINT - Nachricht, in der invalidierte bereiche neu gezeichnet werden. Normalerweise wird WM_PAINT verzögert ausgelöst, um Flackern zu vermeiden.

    3.Welche initialisierungen der Variablen von Objekten der Struktur WNDCLASSEX sind zwingend notwendig, damit das Fenster erscheint?

    Alle. Manche sind aber auch als 0 o.k.

    4.Welche pragma-Anweisungen gibt es für Microsoft Visual C++ 2008 Express Edition, und was bewirken sie (ich komme mit der fehlerhaften Hilfe des Compilers nicht zurecht).

    http://msdn.microsoft.com/en-us/library/d9x1s805.aspx

    5.Was ganau bewirkt eigentlich <__stdcall>?

    Argumente rechts nach links by value über den Stack, Funktion räumt Stack auf, Funktionsname wird mit mit Unterstrich und @<Argumentgesamtgröße> dekoriert.

    6.Wie kriege ich es hin, dass in einem Fenster die "normale" graue Dialogfeldfarbe als Füllbitmap verwendet wird?

    Siehe anderer Thread

    7.Ein Problem mit meinem Compiler. Es ist nicht mehr möglich, korrekt .c/.cpp und .h/.hpp - Dateien herzustellen, sondern lediglich nur "Komponentenklassen". Dateien muss ich manuell erstellen und einbinden. Es erscheinen noch nicht mal die Einträge für diese Dateien. Was ist da los?

    Neu installieren, Support anrufen, oder - falls du jemanden fragst - mal irgendwann Bescheid geben, wie der Kerl eigentlich heißt.

    8.Gibt es vielleicht eine komplette Beschreibung aller API - Funktion, die downloadbar ist, und zwar für C? Google&Co bringen nur Mist

    MSDN kommt mit den Compilern mit, sonst bei google mal "site:msdn.microsoft.com" ranhängen.

    Sei froh, daß mein Build so lange braucht... 😃



  • [quote="peterchen"]

    Sei froh, daß mein Build so lange braucht... 😃

    Ach du Scheisse was kompilierst du denn? Windows 7?


Anmelden zum Antworten