CStringA und Unicode (gelöst)
-
Hi,
ich stecke hier seit ein paar Tagen an einem (für mich anscheinend unlösbaren) Problem.
Schilderung:
ich habe einen CStringA. Genauer habe ich:
CDBVariant Instanz; //Hier Code der die Instanz aus einer MySQL Datenbank füllt Instanz.m_dwType; //Liefert als Wert 10 zurück --> CStringA laut MSDN Instanz.m_pstringA; // so Komme ich an den CStringA ranSoweit sogut.
Nun brauchten aber alle lieben Fenster in meiner MFC Applikation einen Unicode String (ein stinknormaler CString eben, der mit dem lieben L initalisiert wird).Will ich das ausgelesene Ergebnis nun per SetWindowTextW() irgendwo hinschreiben, kommen nur Hieroglyphen raus. Ich habe schon alle möglichen Umwege über wchar_t und Zeiger und sprintf versucht (auch ganz wilde Sachen). Das Komische ist, dass wenn ich es in einer reinen Konsolenanwendung per:
cout << "Inhalt: " << Instanz.m_pstringA->GetBuffer() << endl; //Funktioniert tadellosWie bekomme ich einen CStringA zu einem Unicode CString?
Exitus
-
Eventuell dies benutzen
int MultiByteToWideChar( UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar );
-
SetWindowText(CString(Instanz.m_pstringA));
-
SetWindowText(CA2T(Instanz.m_pstringA));
-
Wow, das ging ja flott, Danke!
sri schrieb:
SetWindowText(CString(Instanz.m_pstringA));und
Martin Richter schrieb:
SetWindowText(CA2T(Instanz.m_pstringA));beantowrtet mir Visual C++ mit
error C2440: '<function-style-cast>': 'CStringA *' kann nicht in 'CString' konvertiert werdenWeil es sich bei
Instanz.m_pstringA //Zeiger!!!Softwaremaker schrieb:
Eventuell dies benutzen
int MultiByteToWideChar( UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar );MultiByteToWideChar hatte ich auch schon versucht, da waren die Hieroglyphen weg, allerdings, war der CString auch leer, in den ich kopiert hatte. Ich werde mir die Funktion hier aber dann nochmals genauer anschauen.
Danke!
Exitus
-
SetWindowText(CString(*Instanz.m_pstringA));
-
sri schrieb:
SetWindowText(CString(*Instanz.m_pstringA));Sag mal, es funktioniert auch noch!!!
Danke, für die Hilfe, aber ich wäre da alleine nicht weitergekommen!!!Woha ich freu mich jetzt so richtig

Exitus