Bekomme Fehlermeldung bei Erstellung eines Windows-Fenster



  • Hi,

    habe mir letzens ein Buch gekauft (über spieleprogrammierung) und unter dem Kapitel: Windows-Programmierung sollte ich folgenden Code ausführen:
    (is von der CD übernommen worden, also Tippfehler meinerseits sind ausgeschlossen: )

    // C++ für Spieleprogrammierer
    // Listing 10.1
    // Ein Windows-Grundgerüst
    //
    #include <windows.h>
    
    // Prototyp der Callback-Funktion
    LRESULT CALLBACK WindowProc (HWND hWnd, UINT message,
                                 WPARAM wParam, LPARAM lParam);
    
    // Hauptprogramm
    //
    int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
                        LPSTR lpcmdline, int ncmdshow)
    {
      WNDCLASSEX windowclass; // Struktur für Fenstereigenschaften
      HWND       hWnd;        // Fenster-Handle
      MSG        message;     // Nachricht
    
      // Der Klassen-Name des Fensters ist frei wählbar
      const char szClassName[] = "Erstes Fenster";
    
      // Struktur mit gewünschten Eigenschaften füllen
      //
    
      // Größe der Struktur zwischenspeichern
      windowclass.cbSize = sizeof (WNDCLASSEX);
    
      // Fenster soll beim Verschieben neu gezeichnet werden
      windowclass.style = CS_HREDRAW | CS_VREDRAW;
    
      // Zeiger auf Callback-Funktion
      windowclass.lpfnWndProc = WindowProc;
    
      // Keine erweiterten Einstellungen
      windowclass.cbClsExtra = 0;
      windowclass.cbWndExtra = 0;
    
      // Instanz speichern
      windowclass.hInstance = hInst;
    
      // Icons und Cursor festlegen
      windowclass.hIcon   = LoadIcon (NULL, IDI_APPLICATION);
      windowclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
      windowclass.hCursor = LoadCursor (NULL, IDC_ARROW);
    
      // Hintergrundfarbe festlegen
      windowclass.hbrBackground = (HBRUSH)COLOR_BACKGROUND+1;
    
      // Ein Menü brauchen wir nicht
      windowclass.lpszMenuName = NULL;
    
      // Klassenname angeben
      windowclass.lpszClassName = szClassName;
    
      // Fensterklasse registrieren
      if (!RegisterClassEx (&windowclass) )
        return (0);
    
      // Das Fenster erzeugen
      hWnd = CreateWindowEx (NULL,
                             szClassName,
                             "Das erste Fenster!",
                             WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                             100, 100,
                             300, 250,
                             NULL,
                             NULL,
                             hInst,
                             NULL);
    
      // Prüfen, ob alles glatt ging
      if (hWnd == NULL)
        return (0);
    
      // Der "Herzschlag" des Programms.
      // Hier werden alle Nachrichten abgeholt,
      // übersetzt und weitergeleitet.
      while (GetMessage (&message, NULL, 0, 0) )
      {
        TranslateMessage (&message);
        DispatchMessage (&message);
    
      }
    
      // Programm beenden
      return (int)(message.wParam);
    
    } // WinMain
    
    // Callback-Funktion zur Nachrichtenverarbeitung
    //
    LRESULT CALLBACK WindowProc (HWND hWnd, UINT message,
                                 WPARAM wParam, LPARAM lParam)
    {
      // Messages auswerten
      switch (message)
      {
        // Fenster schließen? (Auch Alt-F4)
        case WM_DESTROY:
        {
          // Nachricht zum Beenden schicken
          PostQuitMessage (0);
          return (0);
    
        }
    
        // Wurde eine Taste gedrückt?
        case WM_KEYDOWN:
        {
          // Ja, also je nach Taste verzweigen
          switch (wParam)
          {
            // Wurde "Escape" gedrückt?
            case VK_ESCAPE:
            {
              // Ja, also Nachricht zum Beenden schicken
              PostQuitMessage (0);
              return (0);
    
            }
          }
        } break;
      } 
    
      // Die Nachricht wurde nicht von uns verarbeitet, also
      // von Windows verarbeiten lassen.
      return (DefWindowProc (hWnd, message, wParam, lParam) );
    
    } // WindowProc
    

    Wenn ich diesen Code nun starte (mit Visual Studio) kommen folgende
    Fehlermeldungen:

    **Fehler 1 error C2440: '=': 'const char [15]' kann nicht in 'LPCWSTR' konvertiert werden c:\users\admin\documents\c++ für spieleprogrammierung\projekte\test\test\test.cpp 54

    Fehler 2 error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [15]' in 'LPCWSTR' nicht möglich c:\users\admin\documents\c++ für spieleprogrammierung\projekte\test\test\test.cpp 70

    Fehler 3 IntelliSense: Ein Wert vom Typ ""const char *"" kann keiner Entität vom Typ ""LPCWSTR"" zugewiesen werden. c:\users\admin\documents\c++ für spieleprogrammierung\projekte\test\test\test.cpp 54

    Fehler 4 IntelliSense: Das Argument vom Typ ""const char *"" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel. c:\users\admin\documents\c++ für spieleprogrammierung\projekte\test\test\test.cpp 62

    Fehler 5 IntelliSense: Das Argument vom Typ ""const char "" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel. c:\users\admin\documents\c++ für spieleprogrammierung\projekte\test\test\test.cpp 63*

    Nun habe ich auch leider nicht das Wissen, die Fehler zu entfernen, geschweige denn zu sehen 😃 -

    wisst ihr, was da falsch ist ??

    Gruß



  • hallo,
    das liegt an den projekteinstellungen.
    stell doch mal unter projekt/eigenschaften/konfigurationseigenschaften/allgemein

    vom unicode zeichensatz zu multibyte zeichensatz um.
    dann sollte das hinhauen.

    🙂



  • Super, hat funktioniert.

    Vielen Dank 🙂



  • Besser wäre es dein Programm für Unicode-Support umzuschreiben!

    MfG SideWinder



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Oder ein aktuelles Buch zu kaufen 😉


Anmelden zum Antworten