[VC++] Int zu LPWCSTR / Unicode-Text?

  • Hallo zusammen,

    Neuland in Sachen Unicode für mich. Ich würde gerne eine Zahl (in diesem Falle int) in einer MessageBox ausgeben. Wie mach ich das am besten?

    Code
    _resWidth = width;
    MessageBox(NULL, resWidth , L[color=#a31515]"Hallo"[/color], MB_OK);

    Hier ist "Das Argument vom Typ int" natürlich "inkompatibel mit dem Parameter vom Typ LPCWSTR".

  • Bisschen mehr Infos wären nett, nicht jeder kennt die WinAPI um die Typen der Parameter gleich auswendig zu wissen :)

    Welcher Parameter von MessageBox ist LPCWSTR und sollte int sein?
    Was für Typen sind resWidth, _resWidth und width.
    Und warum willst du Zahl als Unicode-Zeichenkette speichern?

  • Weil die Zahl als Text in einer MessageBox ausgegeben werden soll ;D
    Wie bereits gesagt ist _resWidth ein C++ int.
    Hier die benötigten Parameter für MessageBox und der momentan natürlich auftretende Fehler:

    LPCWSTR scheint ein typedef für wchar_t* zu sein.

  • Jo, du hast ne Zahl, brauchst aber ne Zeichenkette. Musst du konvertieren, macht man mit sprintf, bzw. bei wchars mit swprintf:

    sprintf, swprintf (CRT)

    Nachtrag; Codebeispiel (nur mit gcc/glibc getestet):

    Code
    int _resWidth = 42;
    wchar_t buf[10];
    swprintf(buf, sizeof(buf)/sizeof(wchar_t), L"%d", _resWidth);
    printf("%ls\n", buf);

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!