Windows Fenster



  • also nur mit wchar_T geht es noch nicht, aber von dem Wort Multibyte hab ich auch noch nix gehört, ich finde es halt schade, dass grad bei so nem schweren Thema der cade falsch ist 😞



  • PSPfreak20072 schrieb:

    ...ich finde es halt schade, dass grad bei so nem schweren Thema der cade falsch ist 😞

    Und auch das Unterforum... Würde ein Mod das ganze bitte in das WinAPI-Forum verschieben?

    cu André
    P.S: Und schau bitte in die Projekteigenschaften, da wird garantiert etwas von Multibyte erwähnt (vermutlich ist der Code dadurch auch an sich auch nicht falsch).



  • unschön und auch wenn ich jetzt hier geschlagen werd
    caste den 2 parameter

    hWnd = CreateWindowEx
            (
            NULL,
            (LPCWSTR)szClassName,
            "Erstes Windoof Fenster",
            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
            ...
    


  • Dieser Thread wurde von Moderator/in evilissimo 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.


  • Mod

    123 schrieb:

    unschön und auch wenn ich jetzt hier geschlagen werd
    caste den 2 parameter

    hWnd = CreateWindowEx
            (
            NULL,
            (LPCWSTR)szClassName,
            "Erstes Windoof Fenster",
            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
            ...
    

    Du wirst geschlagen! Korrekt. Weil ein cast aus einem MBCS String keinen Unicode String macht.
    Man sollte sich beim Umgang mit der WinAPI mit der TCHAR Notation auseinander setzen.

    Korrekt wäre:

    const TCHAR szClassName[] = _T("Erstes Windoof Fenster"); 
    ...
      hWnd = CreateWindowEx
            (
            NULL,
            szClassName,
            _T("Erstes Windoof Fenster"),
            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
            ...
    


  • Ja und wie soll ich jetzt meinen Code verändern, weil der ist ja 1:1 aus dem Buch, und funktioniert nicht, es ist schade, dass gleich bei nem etwas schwereren Thema der Code nich funzt.

    Grüße


  • Mod

    Stell Dein Projekt von Unicode auf MBCS um, dann geht es auch ohne Code Änderngen...



  • const wchar_t szClassName[] = "Erstes Windoof Fenster";
    

    Ich hätte jetzt angenommen, dass dort ein L" stehen müsste?



  • okay habs jetzt umgestell, aber was ist daran der unterschied? in meinem buch wurde mir da nichts gesagt, dass ich da etwas verändern soll, jedenfalls wurde mein quellcode kompiliert, und gelinkt, ich wollte ihn dann ja gleich ausprobieren, dann bekomm ich ne zugriffsrechtsverletzung an zeile 52 vom obrigen code beim debugging werden auch die zeilen von windowclass und &windowclass rot, und ich hab kein plan an was es liegen könnte 😞

    edit: okay vergesst es tipfehler von mir aber die erklärung für unicode würde ich trozdem wissen wollen! 😉

    bis dann PSPfreak



  • Die Funktion CreateWindowEx, die Du aufrufen möchtest, gibt es nicht. Das ist in Wirklichkeit ein Macro (in winuser.h), über das entweder die Funktion CreateWindowExA oder die Funktion CreateWindowExW aufgerufen wird.
    Erstere ist die Ansi - Version, letztere die Unicode - Version.

    So verhält sich das mit den meisten WINAPI-Funktionen.

    Wenn Du Dein Projekt also als Unicode-Projekt kompilierst, wird die Funktion CreateWindowExW aufgerufen, die mit einem char-Zeiger aber nix anfangen kann.


Anmelden zum Antworten