Frage

Wenn ich tun

wnd = CreateWindow("EDIT", 0,
    WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | 
    ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN,
    x, y, w, h,
    parentWnd,
    NULL, NULL, NULL);

alles ist in Ordnung, aber wenn ich die WS_VSCROLL entfernen und WS_HSCROLL tun dann die folgenden, ich bekomme sie nicht so falsch Fenster. Warum? Nicht nur bekomme ich ein falsches Fenster ist es unbrauchbar, wenn beide WS_VSCROLL und WS_HSCROLL fehlen

style = WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE |
    ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN;
SetWindowLong(wnd, GWL_STYLE, style);
War es hilfreich?

Lösung

Einige Steuer Stile können nicht nach dem Fenstererstellung geändert werden. Die ES_AUTOHSCROLL Stil (die im wesentlichen den Zeilenumbruch Kontrollen) ist einer von ihnen; dies ist (etwas indirekt) von der MSDN-Abschnitt Edit Control Styles angegeben . Sie können die Bits mit SetWindowLong () gesetzt, aber die Steuerung entweder ignorieren oder erratisch verhalten.

Der einzige Weg, diese sauber zu tun ist, um den Edit-Control mit den erforderlichen Stilen neu zu erstellen. Das ist eigentlich das, was Notepad tut, wenn Sie die „Zeilenumbruch“ Einstellung wechseln.

Andere Tipps

Sie können es mit ShowScrollBar () Funktion tun. Sie können feststellen, auch die Funktion EnableScrollBar interessant (), wenn Sie / deaktivieren Scrollbalken eines Fensters aktiviert werden soll. Mit freundlichen Grüßen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top