Wie sieht folgender Code mit Unicode aus?
-
Hi,
ich lese momentan den FAQ-Beitrag über Dialoge ohne Resourcen zu erstellen.
Dort gibt es folgende Zeile:
// The title lpwsz = (LPWSTR)lpw; wcharlength = MultiByteToWideChar(CP_ACP, 0, title, -1, lpwsz, 0); nchar = MultiByteToWideChar(CP_ACP, 0, title, -1, lpwsz, wcharlength); lpw += nchar;title ist dabei ein char*. Soweit sogut, doch wie sieht das aus wenn ich bereits title als wchar_t* (also LPWSTR) habe?
Wie muss der Code angepasst werden?!
-
Ich denke mal, dass du dann eben einfach diesen Abschnitt weglassen kannst...

-
Wenn Du schon Unicode (wchar_t) hast, warum willst Du es dann nochmals nach Unicode (wchar_t) umwandeln?
-
@Jochen Kalmbach & flenders
Mir geht es eher darum, wasich machen muss um den text der in title drin ist, in diesen Speicherbereich (lpw) zu stopfen, so das es klappt?! Von konvertieren hab ich nix gesagt, sorry wenn das falsch rüber gekommen ist.
-
lpw ist doch ein ganz normaler Zeiger, wenn der also auf title zeigen soll:
lpw = title;oder eben einfahc gleich title anstelle von lpw verwenden...
Oder willst du einfach den String umkopieren? lstrcpyW?!
-
und was ist mit
lpw += nchar;?! Wird das gar ent mehr gebraucht?!
-
statt nchar solltest du die Zeichenanzahl auch über lstrlenW ermitteln können - ob du das noch brauchst, hängt von dem nachfolgenden Code ab...
Hab grad mal den FAQ-Thread angeschaut und du wirst das wohl immer noch brauchen. Versuch es mal so (keine Garantie für Richtigkeit):
lstrcpyW((LPWSTR)lpw,title); lpw += lstrlenW(title)+1;
-
@flenders
geht leider nicht
dann kann das dialog nicht erstellt werden 
-
Schau doch mal mit dem Debugger, was mit dem Original-Code nachher im Speicher steht und vergleiche das mit dem, was der modifizierte Code liefert...
-
flenders
Ich weiß doch noch net mal wie dieser Code funktionieren soll?!Bei diesen ganzen Pointer inkrementierungen usw, wo soll ich da einen Ansatzpunkt finden?!
-
Wenn du keine Ahnung hast, was du da machst, wäre es wohl am sinnvollsten entweder den Code unverändert zu übernehmen und eben ein char* zu übergeben oder einfach Resourcen zu verwenden...
