Verticaler Scrollbalken einer Textbox
-
Meine Textbox soll nur einen Vertikalen Scrollbalken bekommen wenn er gebraucht wird.
Die Standard Einstellung erstellt immer einen und setzt in auf enabled wenn er gebraucht wird.
-
In dem Fall musst du die Höhe der einzelnen Zeile (mit GetTextExtentPoint32) ermitteln und mit der Anzahl der Zeilen (über EM_GETLINECOUNT) multiplizieren.
Damit erhältst du die Höhe, die dein Text im EditControl 'belegt'.
Vergleiche diese mit dem Clientbereich des EditControls und rufe die Funktion ShowScrollBar entsprechend auf.
Wichtig ist nur, dass das Control den Style WS_VSCROLL besitzt.
-
Danke für den Anstoss.
Aber wie kann ich zur Laufzeit den Stil WS_VSCROLL setzen?
Wenn ich ihn gleich setze habe ich ja gleich eine abgeblendete Scrollbar.
Auf folgenden Code reagiert die Textbox nicht.LONG ptrStyles = GetWindowLong(GetDlgItem(hDlg,IDC_EDIT), GWL_STYLE); ptrStyles ^= WS_VSCROLL; int ne = SetWindowLong(GetDlgItem(hDlg,IDC_EDIT), GWL_STYLE, (LONG) ptrStyles);
-
Das Problem, dass man den Style WS_VSCROLL nicht nachträglich setzen kann, hatte ich seinerzeit auch.
Ich habe das Control mit dem Style erstellt und die Scrollbar dann über ShowScrollBar(hWndEdit, SB_VERT, FALSE) gleich ausgeblendet.
-
Danke das wars.
Den Rest krieg ich alleine hin.