| 
			
				|  | JLI Spieleprogrammierung 
 
 |  
 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |  
		| Autor | Nachricht |  
		| Fruchteis Mini JLI'ler
 
 
 
 Anmeldedatum: 15.09.2007
 Beiträge: 27
 Wohnort: Heidelberg
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 05.11.2007, 19:56    Titel: String Konvertierung |   |  
				| 
 |  
				| 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 |  |  
		|  |  
		| Dr. Best Senior JLI'ler
 
  
 Alter: 35
 Anmeldedatum: 17.06.2004
 Beiträge: 269
 Wohnort: Köln
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 05.11.2007, 20:07    Titel: |   |  
				| 
 |  
				| 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 |  |  
		|  |  
		| Jonathan_Klein Living Legend
 
  
 Alter: 38
 Anmeldedatum: 17.02.2003
 Beiträge: 3433
 Wohnort: Siegerland
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 05.11.2007, 20:31    Titel: |   |  
				| 
 |  
				| 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
 
 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 |  |  
		|  |  
		| Fruchteis Mini JLI'ler
 
 
 
 Anmeldedatum: 15.09.2007
 Beiträge: 27
 Wohnort: Heidelberg
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 05.11.2007, 20:40    Titel: |   |  
				| 
 |  
				| Herzlichen Dank  . 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 |  |  
		|  |  
		|  |  
  
	| 
 
 | 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
 |