TextOut mit seltsamen Zeichen am Ende



  • Hallo zusammen,

    icher habe einen Integer den ich mit _itow_s in ein Charakterfeld konvertiere und anschließend mit der Funktion TextOut ausgebe:

    wchar_t buffer_lX[6] = {' '}; 
    
    _itow_s( JoystickState.lX, buffer_lX, 10);
    
    TextOut(hdc, 1100, 50, (LPCWSTR)buffer_lX, 6);
    

    Wenn ich eine fünfstellige Zahl ausgebe, erscheint sie wunderbar, so wie es sein soll: 32757
    Sobald die Zahl nur noch vierstellig ist, erscheint am Ende ein Zeichen: 1234 ﻾
    Ist die Zahl nur noch dreistellig erscheinen am Ende das Zeichen doppelt: 123 ﻾﻾

    usw.

    Hat jemand eine Erklärung warum diese Zeichen auftauchen? 😕 😕 😕



  • L'\0' Terminierung des Strings!?
    Und bei TextOut(hdc, 1100, 50, (LPCWSTR)buffer_lX, 6); gibst du immer constant 6 an!??



  • Die Zeichen tauchen ebenfalls bei folgendem Befehl auf:

    TextOut(hdc, 1100, 50, (LPCWSTR)buffer_lX, sizeof(buffer_lX));
    

    Ich könnte natürlich auf den Integerwert abfragen. Sollte der Wert <10000 sein, ändere ich die Größe von 6 auf 5. Aber gibt es da nichts einfacheres?



  • TextOut(hdc, 1100, 50, (LPCWSTR)buffer_lX, sizeof(buffer_lX));

    Falsch!

    So wird das gemacht.

    TextOut(hdc, 1100, 50, (LPCWSTR)buffer_lX, lstrlenW(buffer_lX));
    


  • Kaum macht man es richtig, klappts. 😃 😃 😃

    Danke -lowbyte- 👍

    Grüße

    datatom


Anmelden zum Antworten