CString in LPCWSTR konvertieren -> falsche Kompilereinstellung?!

Ravebaby

Erfahrenes Mitglied
Hallo,

ich muss einen CString in ein LPCWSTR konvertieren. Online stehen immer wieder Postings, das man es einfach casten kann. Bei mir funktioniert das aber nicht. Nun habe ich gehört, dass dies auch an der falschen Kompilereinstellung liegen kann. Stimmt das? Wenn ja, was muss ich tun?

Danke für jede Hilfe!!
 
Ich hab es auch so getestet:
Code:
#include <atlconv.h>
CString s("Test");
USES_CONVERSION;
LPCWSTR pcswtr = A2CW(s);
tut auch nicht... :confused:
 
den Cast hab ich so versucht:
Code:
SHFILEOPSTRUCT fop.pFrom = (LPCWSTR)filepath;
dann kommt folgender Fehler:
c:\Develop\Projects\FileExplorer\ColumnLevelView.cpp(361): error C2440: 'type cast' : cannot convert from 'CString' to 'LPCWSTR'
 
habe es auch mit
Code:
BSTR bstr = filepath.AllocSysString();
versucht. Dann bekomm ich aber den BSTR auch nicht in einen LPCWSTR umgewandelt...
Habs mit nem Cast versucht:
Code:
fop.pFrom = (LPCWSTR)bstr;
c:\Develop\Projects\FileExplorer\ColumnLevelView.cpp(363): error C2440: '=' : cannot convert from 'LPCWSTR' to 'LPCSTR'
 
Zuletzt bearbeitet:
hab nun gelesen, dass man den CString als _T("test") definieren muss, sonst tuts nicht?!
Kann man dies nachträglich noch tun?
 
und für den direkten Cast muss man den Compiler wohl auf UNICODE umstellen. Wenn ich das aber tu, dann stimmen x andere Codestellen nicht mehr. Kann man das irgendwie temporär umstellen?
Ich bin komplett verwirrt :(
 
Bin auch über den Zwischenschritt mit LPCTSTR gegangen:
Code:
LPCTSTR tmp = (LPCTSTR)filepath;
fop.pFrom = A2CW(tmp);
c:\Develop\Projects\FileExplorer\ColumnLevelView.cpp(362): error C2440: '=' : cannot convert from 'LPCWSTR' to 'LPCSTR'
 
Der Wahnsinn. Es lag gar nicht an der Konvertierung. Ich habe einen String in eine Datenquelle fürs Drag & Drop eingepackt. Dabei hab ich aus Versehen ein \n noch eingepackt, was dann Probleme gemacht hat.
Also für das eigentliche Konvertierungsproblem habe ich leider keine Lösung gefunden, aber mein Problem hat sich durch das Entfernen von dem \n erledigt...
 

Neue Beiträge

Zurück