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

20.02.2010, 17:38

MessageBox verweigert das Compilieren

Hallo zusammen!

Ich habe das Problem, dass die Methode MessageBox bei mir nichtmehr funktioniert.
Ich hatte im Buch "C++ für Spieleprogrammierer" keine Probleme mit dieser Funktion.
Seither habe ich auch kein Update oder sonstige bewusste Änderungen an Visual C++ 2008 Express Edition vorgenommen.

Immer wenn ich jetzt ein Programm compilieren will, bringt er eine Fehlermeldung.
Hier der Code und die Fehlermeldung:

C-/C++-Quelltext

1
2
         MessageBox(NULL, "Fehler beim Erzeugen der Direct3D-Schnittstelle!", 
                    "Fehler", MB_OK | MB_ICONEXCLAMATION); 

Fehler:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
1>------ Neues Erstellen gestartet: Projekt: Übungsaufgaben, Konfiguration: Debug Win32 ------
1>Die Zwischen- und Ausgabedateien für das Projekt "Übungsaufgaben" mit der Konfiguration "Debug|Win32" werden gelöscht.
1>Kompilieren...
1>MainCode.cpp
1>c:\users\simon\documents\simon\eigene bilder\c++\übungsaufgaben\maincode.cpp(24) : error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [49]' in 'LPCWSTR' nicht möglich
1>        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>c:\users\simon\documents\simon\eigene bilder\c++\übungsaufgaben\maincode.cpp(42) : error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [53]' in 'LPCWSTR' nicht möglich
1>        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>c:\users\simon\documents\simon\eigene bilder\c++\übungsaufgaben\maincode.cpp(62) : error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'char [1024]' in 'LPCWSTR' nicht möglich
1>        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>Das Buildprotokoll wurde unter "file://c:\Users\Simon\Documents\Simon\Eigene Bilder\C++\Übungsaufgaben\Debug\BuildLog.htm" gespeichert.
1>Übungsaufgaben - 3 Fehler, 0 Warnung(en)
========== Alles neu erstellen: 0 erfolgreich, Fehler bei 1, 0 übersprungen ==========

error C2664:'MessageBoxW':Konvertierung des Parameters 2 von 'const char [49]' in 'LPCWSTR' nicht möglich.

Ich bin ziemlich verwirrt, da ich ein Programm, welches sich früher kompilieren liess, nicht mehr kompilieren kann, ohne dass diese Fehlermeldung kommt.
Hat jemand eine Erklärung oder Lösung für dieses Problem?

Danke im Voraus
MfG Sydon

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

2

20.02.2010, 17:49

Signaturen werden überbewertet

3

20.02.2010, 18:21

Zitat

error C2664:'MessageBoxW':Konvertierung des Parameters 2 von 'const char [49]' in 'LPCWSTR' nicht möglich.


Das sagt doch einfach alles. Du versuchst einen ANSII code mit Unicode zu compilieren. Entweder du nimmst MessageBoxA ansellte von MessageBox (übrigens der Befehl MessageBox ist eigentlich nur ein #define der je nach Compilereinstellung zwischen MesageBoxA und MesageBoxW unterscheidet) oder du änderst die Compilereinstellung.

Besser wäre es allerdings du lernst in Unicode zu programmieren.

4

20.02.2010, 21:46

Cool, danke euch beiden!
Von MessageBoxA stand nix im Buch^^

5

20.02.2010, 21:46

Zitat

Besser wäre es allerdings du lernst in Unicode zu programmieren.
warum sollte das besser sein?
Metal ist keine Musik sondern eine Religion.

unsigned long

Treue Seele

Beiträge: 140

Wohnort: Herzogenrath

Beruf: Fachinformatiker Fachrichtung Anwendungsentwicklung

  • Private Nachricht senden

6

20.02.2010, 22:34

Fabian Kock
Weil man seit Windows NT nicht mehr mit ANSI-Zeichensätzen unter Windows coden soll. Alternativ sollte man jedoch mit TCHAR und _T-Makros arbeiten.

Werbeanzeige