|
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: 34 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: 37 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
|