kein SetWindowTextA



  • Ich möchte gern den Text eines CEdit ändern.
    Bisher hat das immer mit

    GetDlgItem(IDC_EDIT)->SetWindowTextA(LPCTSTR("blablabla"));
    

    funktioniert.
    Jetzt gibt es allerdings nur SetWindowTextW, und das gibt nicht das aus was ich möchte (irgendwelche Zeichen).

    Weiss jemand was ich falsch mache??



  • Die beiden Funktionen SetWindowTextA und SetWindowTextW sind die Ansi bzw. wide-character Versionen um den Text eines Windows zu setzen.

    Normalerweise schaltet die MFC/Compiler zwischen den beiden Funktionen mittels Preprozessor-Direktive _UNICODE um und man verwendet die Versionen ohne A bzw. W.
    Die Strings gibst du mit dem _T(...) Makro an.

    Du bekommst den Zeichensalat deshalb, da die Funktion SetWindowTextW einen Unicode - String erwartet, du ihr aber einen Ansi-String gibst. ( Unicode-Zeichenketten schauen etwa so aus: L"Hello World" ).

    Also kümmere dich nicht um A oder W sondern verwende die Funktionen ohne A/W und das _T(...) Makro.

    GetDlgItem(IDC_EDIT)->SetWindowText( _T("blablabla") );
    


  • und wenns die auch nicht gibt??

    gibt nur SetWindowTextW



  • SetWindowText taucht nicht immer im intellisense auf, entferne einfach das W
    auch wenns nicht da steht - es existiert {o;

    zudem wenn du schon mit SetWindowTextA arbeitest, lass den cast weg



  • SetWindowTextA gibts nur nicht wenn man für Windows CE compiliert (und nichtmal da bin ich mir sicher -- nehme es aber an da bei Windows CE die ANSI APIs im allgemeinen fehlen).

    Äh, ja, 64 Bit Windows weiss ich nicht, könnte sein dass die ANSI APIs dort auch fehlen.


  • Mod

    Mit 64bit hat das nichts zu tun.


Anmelden zum Antworten