C++ LPCWSTR Problem

tight19

Cadet 3rd Year
Registriert
Apr. 2010
Beiträge
39
hallo erstmal,
ich habe ein problem mit dem erstellen meines programms
habe viele andere themen darüber gelesen aber nichts hat geholfen :(
bekomme immer den fehler
"cannot convert from 'const char [X]' to 'LPCWSTR'"
es kommt bei vielen verschiedenen sachen wie zb bei ReOpenKeyEX oder HWND hwnd;
hwnd = FindWindow
habe schon versucht in den einstellungen den zeichensatz von unicode auf multibyre umzustellen aber entweder kommen noch mehr fehler oder es klappt trotzdem nicht

könnt ihr mir vielleicht helfen wie ich das hinkriege?

mfg
 
Du musst bei den Projekteinstellungen auf Multibyte Character stellen und nicht auf Unicode. Schon gehts.
 
Bei welchem Funktionsaufruf kommt denn der Fehler genau ? Bist du dir sicher, dass du die richitge Einstellung vorgenommen hast. Das schreit wirklich nach dem Standard Unicode Fehler.
 
RegOpenKeyEx
kanns du mir ein beispiel geben dann kann ich testen ob es geht
 
const char * und LPCWSTR sind zwei komplett verschiedene Dinge. LPCWSTR ist nämlich const wchar_t *
 
so sieht mein fehler aus:

'FindWindowW': Konvertierung des Parameters 1 von 'const char [14]' in 'LPCWSTR' nicht möglich
 
einfach deinen Textstring (char array) in wide char array umwandeln. Stichwort wchar_t bzw TCHAR. Den Text selber mit dem TEXT() Makro umwandeln in wide chars dann sollte es funktionieren.

für TCHAR wird allerdings tchar.h als include benötigt. TCHAR wird bei unicode in wchar_t convertiert, ansonnsten nach char.
 
Versuchs mal mit einem der beiden Varianten:

LPCWSTR text = L"Text";
wchar_t* text = TEXT("Text");
 
ehm ok das versteh ich nicht könntes du mir da ein beispiel geben ?
zb an diesem stücken:

HKEY hKey;
RegCreateKeyEx(HKEY_CURRENT_USER,"Test",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0)

edit: werde ich eben testen
edit2: bekomme trotzdem den gleichen fehler
 
zu beginn #include <tchar.h>
und dann heißt es _T("Test")
dann kannst du es für beide varianten kompilieren.
 
Code:
#include <tchar.h>
....
HKEY hKey;
RegCreateKeyEx(HKEY_CURRENT_USER,TEXT("Test"),0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCE SS,NULL,&hKey,0)
 
Anstatt hier evtl. umständlich umzuwandeln, benutz einfach RegOpenKeyExA().

Deaktivieren kannst du es, wenn du in den Einstellungen auf Multi-Byte umstellst (hat bei mir bisher immer funktioniert) oder du schreibst komplett am Anfang des Codes #undef UNICODE.
 
nach tchar.h includen bekomm ich das hier 2 mal:
Fehler 1 error LNK2028: Nicht aufgelöstes Token (0A00000F) ""extern "C" long __stdcall RegCreateKeyExW(struct HKEY__ *,wchar_t const *,unsigned long,wchar_t *,unsigned long,unsigned long,struct _SECURITY_ATTRIBUTES * const,struct HKEY__ * *,unsigned long *)" (?RegCreateKeyExW@@$$J236YGJPAUHKEY__@@PB_WKPA_WKKQAU_SECURITY_ATTRIBUTES@@PAPAU1@PAK@Z)", auf das in Funktion ""int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)" verwiesen wird.
 
Ich nochmal:
Code:
RegCreateKeyEx(HKEY_CURRENT_USER,"Test",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0);

mit Multibyte Character Set laesst sich die Zeile bei mir problemlos kompilieren. Du hast sicherlich die falschen Einstellungen vorgenommen !!!!!
 
Zuletzt bearbeitet:
wo muss ich denn genau was einstellen und wie is dein gesamter code den du benutzt
 
also bei dem neuen projekt klappt es
mal sehen wieso es nicht bei dem anderen klappt klappt

aber vielen dank dass ihr euch mein problem zu herzen genommen hat :)
 
tight19 schrieb:
also bei dem neuen projekt klappt es
mal sehen wieso es nicht bei dem anderen klappt klappt

aber vielen dank dass ihr euch mein problem zu herzen genommen hat :)

Hast du dir den Screenshot mal angeschaut ? Da findest du mit 99% Sicherheit warum es bei dir nicht funktioniert.
Ist vielleicht auch nicht optimal als Anfaenger, als den ich dich hoffentlich richtig einschaetze, gleich mal in der Registry rumzuschreiben. Ich hoffe du weisst was du tust.
 
Zurück
Oben