Erstellen einer WindowsForm - (LPCSTR)-Cast



  • Hallo,
    Ich habe eine Frage und zwar habe ich in dem C++-Buch das ich grade durcharbeite immer WindowsForms mit

    //...
    hWnd = CreateWindowEx(NULL,L"WindowClass1",L"Our First Windowed Program", WS_OVERLAPPEDWINDOW, 300, 300,
                          500, 400, NULL, NULL, hInstance, NULL);
    ShowWindow(hWnd, nCmdShow);
    

    erstellt/angezeigt und es hieß immer,dass das 2. und 3. Argument Fehlerhaft waren. (LPCSTR wird erwartet) Also habe ich die beiden Argumente mit (LPCSTR) gecastet, mein Problem ist jetzt, dass der Fenstername nicht angezeigt wird.
    Also habe ich gedacht, ich schaue wie das Visual Studio das macht, aber dort funktioniert das vollkommen anders.

    Was muss ich machen, damit die Namen richtig angezeigt werden?

    MFG
    Neokil



  • Probier mal mit TEXT("Blabla");

    Bei mir klappts aber auch einfach wenn ich nur "Blabla" schreiben.

    Achja, du bist im falschen Forum 😃

    Und hau noch ein UpdateWindow() am schluss rein.



  • Neokil schrieb:

    Also habe ich die beiden Argumente mit (LPCSTR) gecastet

    Falsche Schlussfolgerung. Casten zum Beheben von Compilerfehlern ist selten gut.

    Übergib Stringliterale ohne L , also keine Wide-Stringliterale. "LPCSTR" enthält nämlich kein W.

    hWnd = CreateWindowEx(NULL,"WindowClass1","Our First Windowed Program", WS_OVERLAPPEDWINDOW, 300, 300,
                          500, 400, NULL, NULL, hInstance, NULL);
    

    Hüte dich wenn möglich vor C-Casts. In C++ gibt es entsprechende sichere Operatoren ( static_cast , const_cast , reinterpret_cast und dynamic_cast ). Die casten im Gegensatz zum Klammercast (LPCSTR) nicht einfach alles, sofern irgendwie möglich, sondern haben einen genau definierten Aufgabenbereich.



  • ok vielen dank!

    Es funktioniert! 😃



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ 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.


Anmelden zum Antworten