cast von std::string::c_str() in LPCWSTR
-
Hi zusammen
ich habe folgenden code in meinem Programm:
std::string text = "Hello, world!"; //dann im message-switch in der WndProc: DrawText(hdc, (LPCWSTR)text.c_str(), -1, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
das Resultat sind chinesische Schriftzeichen
Also es ist klar dass das was damit zu tun hat,
dass der ASCII-C-String in einen Unicode-String umgewandelt wird. (bzw. von char* nach wchar_t*)
Aber ich dachte dass die lateinischen Buchstaben in Unicode dieselben
Codes hätten wie in ASCII...gibts da einen workaround, also gibt es bspw. eine funktion die einen std::string in einen wchar_t* umwandelt statt in einen char*?
-
so hab ich es mal gemacht (wahrscheinlich nicht ansatzweise sicher/richtig):
string str = "Hello, world!"; wstring wstr( str.begin(), str.end() ); LPCWSTR lpcwStr( wstr.c_str() );
google sagt btw:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=366966&SiteID=1
http://www.vbforums.com/showthread.php?t=387858mfg,
julian
-
Oder einfach:
USES_CONVERSION; DrawText(hdc, A2T(text.c_str()), -1, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
-
XMaster schrieb:
Oder einfach:
USES_CONVERSION; DrawText(hdc, A2T(text.c_str()), -1, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
Geht nur wenn die ATL vorhanden ist. Ansonsten geht dann auch CA2T ab VS-2003