ES_RIGHT in EDIT Widget



  • Hallo zusammen.

    Weiss jemand, wie man eine Edit-Box, die man mit
    wnd = CreateWindow("EDIT", "", ....);
    gebaut hat, rechtsbündig bekommt?

    In der WinApi steht, dazu muß die MULTILINE sein. Ich brauche aber
    eine einzeilige Eingabe-Box.

    Hab nirgens was gefunden, wie man das macht.

    Danke



  • Platform SDK schrieb:

    ES_RIGHT
    Windows 98/Me, Windows 2000/XP: Right aligns text in a single-line or multiline edit control.
    Windows 95, Windows NT 4.0 and earlier: Right aligns text in a multiline edit control

    Wenn du als mit win95,winnt4 und älter kompatibel sein willst:
    ES_MULTILINE und ES_RIGHT angeben, ansonsten reicht ES_RIGHT.
    Mulitline heisst ja nicht unbedingt, dass du auch mehr Zeilen als eine verwendet musst 😉



  • Aha! Vielen Dank!

    Ja, es muß win95 kompatibel sein.

    Aber man darf halt nicht mehr als eine Zeile reinschreiben.
    Also Enter sollte nicht gehen.

    Na, ich probier es mal



  • Sofern du nicht noch ES_WANTRETURN angibst, wird er keine neue Zeile machen 😉
    Evtl. beim reinkopieren über die Zwischenablage.
    Aber du könntest ja noch EN_CHANGE abfangen und alles was mehr als eine Zeile ist wieder abschneiden 😉



  • Also vielen Dank erstmal.

    Es funktioniert, wenn man ES_RIGHT gleich bei
    CreateWindow() mit angibt, aber nicht mehr, wenn man

    long style;
    
    style = WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL | ES_MULTILINE;
    wnd = CreateWindow("EDIT", "", style, ...);
    SetWindowLong(wnd, GWL_STYLE, style | ES_RIGHT);
    

    schreibt.
    Ich möchte ES_RIGHT nämlich nicht immer anschalten.



  • Platform SDK schrieb:

    After the control has been created, these styles cannot be modified, except as noted.

    ...dann würde ich stattdessen ein RichEdit-Control nehmen, da kann man via EM_SETPARAFORMAT jederzeit die Ausrichtung ändern.

    ...oder tricksen: 2 Edit-Controls erzeugen, eins mit ES_RIGHT und eins ohne.
    Dann immer das was man braucht einblenden und das andere ausblenden. Inhalt einfach jeweils vorm einblenden kopieren 😉



  • Vielen herzlichen Dank für die Hilfe!

    Da hätte ich eigentlich auch alleine drauf kommen können. 🙂

    Aber mein SDK ist wohl ein bischen zu alt. Hab mal nach dem Text gegreped und den gibts bei mir überhaupt nicht.
    Ich hatte nämlich mal ein ähnliches Problem, da ging SetWindowLong(wnd, GWL_EXSTYLE, WS_EX_STATICEDGE); bei Edit's nicht.
    Und da hab ich dann rausgefunden, daß es hilft, wenn man danach noch SetWindowPos() aufruft.
    Dachte, hier gibt's auch irgend so einen Trick!

    Jedenfalls nochmal vielen Dank!


Anmelden zum Antworten