Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi Comm.,

ich habe ein Problem, am besten erstmal der betroffene Code:

MessageBox(NULL,"Soll im Vollbildmodus gestartet werden?",

      "Vollbilmodus gewünscht?",MB_YESNO|MB_ICONQUESTION)
Meine includes:
#include <windows.h>

#include <gl\glu.h>

#include <gl\gl.h>

#include <gl\glaux.h>
Ich arbeite mir MS Visuall Studio 2008, beim kompilieren bekomme ich folgende Fehlermeldung:
c:\users\media\documents\visual studio 2008\projects\open_gl_0\open_gl_0\main.cpp(110) : error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [40]' in 'LPCWSTR' nicht möglich

        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

Wie kann ich den Fehler umgehen? Also ich meine wie kann ich dem Compiler(oder der Klasse?) beibringen, dass der Übergebene Parameter kein char array sondern ein LPCWSTR ist?

ich nehme mal an, dass die Klasse MessageBox in windows.h steht, aber dort habe ich Sie nicht gefunden.

Über jede hilfe dankbar

mfg

Geschrieben

Die Windows-API bietet fast alle Funktion, die mit Strings arbeiten, in zwei Varianten: Multi-Byte und Unicode

Es gibt eigentlich keine Funktion namens MessageBox. Es gibt MessageBoxA und MessageBoxW. MessageBox ist nur ein Makro, das je nach Projekteinstellungen entweder auf MessageBoxA (Multi-Byte) oder MessageBoxW (Unicode) verweist.

Die Unicode-Versionen haben die Eigenschaften, dass Strings als LP[C]WSTR erwartet werden. In Visual C++ 2008 ist Unicode die Voreinstellung.

Du kannst das Problem also auf drei Arten lösen:

  • Stell die Projekteinstellung von Unicode auf Multi-Byte
  • Benutz Wide Char-Literale und WCHAR statt char
  • Ruf explizit MessageBoxA auf (das ist die schlechteste Möglichkeit).

Wenn dein Programm beide Einstellungen unterstützen soll, kannst du TCHAR und die dazugehörigen Funktionen benutzen.

Geschrieben

Nur noch als Interessen-Frage: Wie kann ich einen LP[C]WSTR übergeben, bzw. initialisieren?

  • _T-Makro (Vermutung)
  • CA2W-Makro
  • ein 'L' vor die Anführungsstriche
  • MultiByteToWideChar

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...