falsche Zeichen in Titelleiste



  • ich bin neu in c++ und erst recht in der Windowsprogrammierung. Ich habe das Buch "C++ für Spieleprogrammierer" und hänge jetzt bei der Windowsprogrammierung. Die Grundlagen beherrsche ich einigermaßen. Mein Problem ist folgendes: Wenn ich nun einen Programmtitel angebe(in der FUnktion CreateWindowExW,3. Parameter), dann werden die Zeichen im laufenden Programm falsch ausgegeben. Es stehen dann überall solche Kästchen. Was auch komisch ist, ist die Tatsache, dass ich den String mit (LPCWSTR) casten muss, was laut dem Beispieltext im Buch nicht nötig ist. Ich verwende Visual Studio 2005.
    Der Fehler scheint ja irgendetwas damit zu tun haben, dass er den Titel falsch übersetzt. Wäre schön, wenn mir jemand helfen könnte.



  • Zeig mal nen bisschen Code...
    Wenn du CreateWindowExW benutzt solltest du auch nen CStringW uebergeben.. multibytecharacter passen nicht in nen CString...



  • Und wenn du tatsächlich "nur" einen CString mit dem Titel hast, dann solltest du ihn nicht durch einen Cast in die richtige Form quetschen, sondern durch Konvertierungsmakros wie T2W().

    (btw, es gibt auch eine "CreateWindowEx()")



  • So, in der Funktion

    int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpcmdline, int ncmdshow){
    

    steht dann im Buch:

    // Das Fenster erzeugen
    hWnd = CreateWindowEx (NULL,szClassName, "Das erste Fenster", WS_OVERLAPPED | WS_VISIBLE,100, 100, 300, 250, NULL, NULL, hInst, NULL);
    

    Und bei dem String ("Das erste Fenster") muss ich casten. Außerdem steht bei mir, wenn ich den Mauszeiger auf CreateWindowEx schiebe, steht da: #define CreateWindowExW. Hilft das jemanden weiter??



  • Die Beispiele aus dem Buch sind in Ansi geschrieben und Dein Projekt wird als Unicode kompiliert. Das beißt sich.

    Du musst die Unicode-Einstellung für das Projekt ändern. Das passiert unter "Configuration Properties - General". Dort ist es der Eintrag "Character Set" und der muss auf "Not Set" gesetzt werden.



  • Hmm, jetzt startet er das Programm gar nicht mehr. Und casten muss ich trotzdem noch.



  • Du warst zu schnell mit der Antwort. Ich hatte eben noch gelesen, dass Du VS 2005 verwendest und den Beitrag korrigiert. 🙂



  • Irgendwie startet er das Programm gar nicht mehr. Fehler werden weder beim Compilieren noch beim starten angezeigt. Man sieht einfach nichts. Ich werde mich morgen noch mal ransetzen. Vielleicht hat aber trotzdem schon jemand die Lösung des Startproblems. Ich habe jetzt einfach nur Character Set auf "Not set" gestzt. Wie sieht eigentlich der Unicode-Text aus?



  • Probier einfach mal:

    [cpp]hWnd = CreateWindowEx (NULL,szClassName, L"Das erste Fenster", WS_OVERLAPPED | WS_VISIBLE,100, 100, 300, 250, NULL, NULL, hInst, NULL);[/cpp]


Anmelden zum Antworten