JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=9ab8ba41b43e3e8c5b6c2dbaecdff9b6Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

String Konvertierung

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Fruchteis
Mini JLI'ler



Anmeldedatum: 15.09.2007
Beiträge: 27
Wohnort: Heidelberg
Medaillen: Keine

BeitragVerfasst am: 05.11.2007, 19:56    Titel: String Konvertierung Antworten mit Zitat

Hi,

habe ein Problem mit einer Win32-Applikation.
Ich erhalte ständig diese drei Fehler, deren Gründe in der Übergabe von Strings an Funktionen liegt.
Ansich dürfte ich diese Fehlermeldungen nicht erhalten, da diese Übergabe i.d.R erlaubt ist.

Code:

1>------ Build started: Project: Kapitel 12, Configuration: Debug Win32 ------
1>Compiling...
error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [38]' to 'LPCWSTR'
1>        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style c12\kapitel 12\hello error C2440: 'initializing' : cannot convert from 'const char [12]' to 'LPCWSTR'
1>        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
error C2065: 'wsCLASSNAME' : undeclared identifier



Hier der Quelltext dazu:
Code:

// Windows_Programm
//
#include<windows.h>

// Funktions_Prototypen
//
HWND    CreateMainWindow(HINSTANCE hInstance);
LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg,
                        WPARAM wParam, LPARAM lParam);

// Globale_Variable für das Fenster_Handle
HWND hWnd = 0;

// Hauptprogramm
//
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
               LPSTR lpCmdLine, int nShowCmd)
{
   // Variablen
   MSG msg;                   // Nachrichten_Struktur

   // Fenster_Erzeugen und Handle_Speichern
   hWnd = CreateMainWindow(hInstance);

   // Fehler_Abfrage
   if(0 == hWnd)
   {
      // Fehler_Meldung
      MessageBox(0, "Fenster konnte nicht geoeffnet werden",
                "Fehler", MB_OK);

      // Programm_Beenden
      return(0);
   }

   // Message_Pump
   while(GetMessage(&msg, NULL, 0, 0))
   {
      // Nachricht_Senden an Callback_Funktion
      DispatchMessage(&msg);
      TranslateMessage(&msg);
   }
   // Programm_Beenden
   return(0);
}//WinMain_Funktion

// Funktions_Definition
//
// CreateMainWindow
// Funktion: Die Fensterklasse erzeugen und das Fenster erstellen
HWND CreateMainWindow(HINSTANCE hInstance)
{
   // Variablen
   const char csCLASSNAME[] = "WindowClass";      // Klassen_Name

   // Fensterklasse_Erzeugen
   WNDCLASSEX wndClass = {
      sizeof(WNDCLASSEX),                   // Größe_Angeben
      CS_DBLCLKS | CS_OWNDC |               // Standardstile
      CS_HREDRAW | CS_VREDRAW,             
      MessageHandler,                       // Callback_Funktion
      0,                                    // Nicht_Verwendet
      0,                                    // Nich_Verwendet
      hInstance,                            // Anwendungs_Instanz
      LoadIcon(NULL, IDI_WINLOGO),          // Windows_Logo
      LoadCursor(NULL, IDC_ARROW),          // Normaler_Cursor
      (HBRUSH)GetStockObject(WHITE_BRUSH),  // Weißer_Pinsel
      NULL,                                 // Kein_Menü
      csCLASSNAME,                          // KLassen_Name
      LoadIcon(NULL, IDI_WINLOGO)           // Windows_Logo
   };

   // Fensterklasse registrieren, damit sie von
   // CreateWindowEX() verwendet werden kann
   RegisterClassEx(&wndClass);

   // Der Rückgabewert von CreateWindowEx() ist auch der
   // Rückgabewert der Funktion
   return (CreateWindowEx(
                        NULL,                     // Keine erweiterten Stile
                    wsCLASSNAME,              // KLassen_Name
                          "Ein einfaches Fenster",  // Fenster_Titel
                    WS_OVERLAPPEDWINDOW |     // Fenster_Eigenschafen
                    WS_VISIBLE,
                    0, 0,                     // Koordinaten

                    400, 300,                 // Größe
                    NULL,                     // Elternfenster_Handle
                    NULL,                     // Menü_Handle
                    hInstance,                // Anwendungs_Instanz
                    NULL));                   // Nicht_Verwendet
} // CreateMainWindow_Funktion

// Callback_Funktion
// Funktion: Die Nachrichten bearbeiten
LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg,
                        WPARAM wParam, LPARAM lParam)
{
   // Nachrichten_Behandeln
   switch(msg)
   {
      // Fenster_Schließen
   case(WM_DESTROY):
      {
         PostQuitMessage(WM_QUIT);
         return(0);
      }break;
   }
   // Standard_Funktion
   return(DefWindowProc(hWnd, msg,
                      wParam, lParam));
   
} // Callback_Funktion


Hoffe ihr könnt mir helfen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dr. Best
Senior JLI'ler


Alter: 34
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 05.11.2007, 20:07    Titel: Antworten mit Zitat

Du musst einfach in den Projekteigenschaften (bei VS Projekt-> "Projektname"-Eigenschaften) unter Allgemein die Eigenschaft Zeichensatz von Unicode auf Multibyte umstellen.

Wenn du das nicht machst wird eine Konstanten definiert, die bewirkt, dass alle Funktionen der Win API statt char* strings short* strings schlucken.
_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 05.11.2007, 20:31    Titel: Antworten mit Zitat

1.: Wir haben hier auch Cpp-Tags (wäre net einen Hinweis auf die Postingseite zu machen, das macht nämlich jeder neue falsch).

2. Entweder Projekteinstellungen auf nicht Unicode setzen, oder ein
CPP:
#undef UNICODE

ganz an den Anfang setzen, das müsste auch gehen.
Noch besser wäre natürlich ein Unicode Projekt. Es gibt ein paar Makros und typedefs, mit denen du später ganz simpel für Unicode oder nicht kompilieren kannst. tchar statt char und TEXT("hallo dorf") statt "hallo dorf".
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fruchteis
Mini JLI'ler



Anmeldedatum: 15.09.2007
Beiträge: 27
Wohnort: Heidelberg
Medaillen: Keine

BeitragVerfasst am: 05.11.2007, 20:40    Titel: Antworten mit Zitat

Herzlichen Dank Very Happy .
Und ich dachte schon es würde an Visual C++ 2008 Beta 3 liegen, da ich weder in Visual C++ 2003 noch in VC++ 2005 das Problem hatte.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum