Probleme mit Fenstertitel (Unicode und das Benutzen von WNDCLASSEXA)



  • Hoi!

    Ich will in meinem Programm Unicode nutzen (ich hab auch UNICODE definiert), mit einer Ausnahme - beim Erstellen des Fensters, um Win98 kompatibel zu bleiben.
    Ich hab mich mal genauer über Microsoft Layer for Unicode informiert, finde es aber übertrieben, das wegen zwei Funktionen einzusetzen.
    Mein einziges Problem ist, dass der Fenstertitel falsch dargestellt wird (ein paar Boxen und am Ende ein e).
    Und das, obwohl ich ein const char* übergebe und nicht wchar_t.

    #define windowTitle "THE StoneAge-Game"
    #define windowClassName "MeineKlasse"
    bool Game::CreateGameWindow(HINSTANCE &hInstance, int &nCmdShow)
    {
    	// Die Eigenschaften des zu erzeugenden Fensters festlegen:
     	WNDCLASSEXA wndclass;
    	wndclass.style			= CS_HREDRAW | CS_VREDRAW;
    	wndclass.lpfnWndProc	= WndProc;
    	wndclass.cbClsExtra		= 0;
    	wndclass.cbWndExtra		= 0;
    	wndclass.hInstance		= hInstance;
    	wndclass.hIcon			= NULL;
    	wndclass.hCursor		= LoadCursor(NULL, IDC_ARROW); 
    	wndclass.hbrBackground	= (HBRUSH)GetStockObject(BLACK_BRUSH);
    	wndclass.lpszMenuName	= NULL; 
    	wndclass.lpszClassName	= windowClassName;
    	wndclass.cbSize			= sizeof(wndclass);
    	wndclass.hIconSm		= LoadIcon(NULL, IDI_APPLICATION);
    	// Die Fensterklasse registrieren:
    	if (!RegisterClassExA(&wndclass))
    	{
    		MessageBox(NULL, L"Game::CreateGameWindow()->RegisterClassExA() fehlgeschlagen!", L"Fehler beim Starten der Anwendung", 0);    
    		return false;
    	}
    
    	// Fenster jetzt erzeugen! hwnd speichert das Handle des Fensters:
    	hwnd = CreateWindowA(windowClassName, windowTitle, WS_POPUP, 150, 120, 400, 300, NULL, NULL, hInstance, NULL);     
    	ShowWindow(hwnd, nCmdShow);  
    	UpdateWindow(hwnd);
    
    	if (hwnd != NULL)
    		return true;
    	else
    	{
    		MessageBox(NULL, L"Game::CreateGameWindow()->CreateWindowA() fehlgeschlagen!", L"Fehler beim Starten der Anwendung", 0);    
    		return false;
    	}
    }
    

Log in to reply