Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

05.03.2013, 20:53

error C2440: 'const char [15]' kann nicht in 'LPCWSTR' konvertiert werden

Hi,
bei mir funktioniert der Quellcode aber trotzdem nicht...

Habe die leere Win32 Anwendung (denke ich mal) richtig erstellt & den Code von der CD kopiert. Bekomme jetzt zwei Fehler:

Zitat

Fehler 1 error C2440: '=': 'const char [15]' kann nicht in 'LPCWSTR' konvertiert werden c:\users\...\documents\visual studio 2008\projects\fenster\fenster\main.cpp 54
...und...

Zitat

Fehler 2 error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [15]' in 'LPCWSTR' nicht möglich c:\users\...\documents\visual studio 2008\projects\fenster\fenster\main.cpp 70
Keine Ahnung was ich falsch mache, aber irgendwas läuft ja falsch :S

Sorry falls das ne dumme Frage ist, brauche aber Hilfe :)

//EDIT: Ich benutze Visual C++ 2008

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

05.03.2013, 21:00

Das Problem ist, dass du an Unicode WinAPI Funktionen Stringliterale übergibst, welche keine Unicode Strings sind. Die ordentliche Lösung: Verwend explizit die Unicode Varianten der WinAPI Funktionen (deren Name hat ein W hinten dran, also FunctionNameW()), wchar_t Strings und entsprechende Literale (L"blub"). Die einfache Lösung: Schalt UNICODE ab; in den Projekteigenschaften unter General das Character Set auf Not Set stellen.

3

05.03.2013, 21:19

Also steht der Code falsch im Buch? 8|

Und ich muss sagen, dass ich noch nicht solange Programmiere um den Text umzusetzen, den du geschrieben hast dot :S
Trotzdem Danke! :)


Habe aber im Internet einen Code gefunden der auf den ersten Blick ziemlich ähnlich aussieht... ich probier jetzt erstmal mit dem weiter zu kommen & es eventuell irgendwann zu verstehen :D

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

05.03.2013, 21:21

Der Code im Buch ist wahrscheinlich für eine ältere Version von Visual Studio gedacht, wo UNICODE noch nicht standardmäßig ein war. Wie sieht dein Code denn eigentlich genau aus und was für eine Lösung hast du da nun gefunden?

Edit: Hab das hier mal in einen eigenen Thread verlagert, da es mit dem Thread wo es ursprünglich gepostet wurde überhaupt nix zu tun hat... ;)

5

05.03.2013, 21:28

Den Code den ich jetzt benutzen wollte habe ich von dieser Seite:
http://www.computerbase .de/forum/showthread.php?t=561359

Soll ich den Code aus dem Buch auch ins Forum kopieren? 8|
Der würde hier 131 Zeilen zuklatschen..

//EDIT: Sorry, hab den neuen Thread erst jetzt gesehen :/

Durza

Treue Seele

Beiträge: 104

Beruf: Student (MSc Cyber Security)

  • Private Nachricht senden

6

06.03.2013, 18:10

Füg' einfach ein 'L' vor deinen Text ein.

Beispiel:

C-/C++-Quelltext

1
CreateWindow (L"Name", ...);


Durza

7

06.03.2013, 21:38

Hat geklappt, danke! =)

Für die "Nachwelt" falls jemand das selbe Problem hat.. die Sachen habe ich geändert:

C-/C++-Quelltext

1
 windowclass.lpszClassName = L"WindowsClass1";
(Zeile 54)

C-/C++-Quelltext

1
 hWnd = CreateWindowEx (NULL, L"WindowsClass1", L"Das erste Fenster!", [usw...]
(Zeile 61 - 63)

Danach klappt es.

Danke nochmal! :thumbsup:

8

07.03.2013, 17:19

Du solltest dir trotzdem ansehen, was Unicode ist, und was dieses 'L' da eigentlich macht. Weil sonst bekommst du bald das nächste Problem, wenn du mal eine Variable als Fenstertitel benutzen willst, die nicht Unicode ist.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige