Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Konvertierung von const char [x] in LPCWSTR

Empfohlene Antworten

Veröffentlicht

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

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.

Okay, die Multi-Code umstellung hat geklappt.

Vielen Dank!

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.