Pregunta

Cuando lo hago

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);

todo está bien, sin embargo, si elimino WS_VSCROLL y WS_HSCROLL, hago lo siguiente, no obtengo que tengan una ventana incorrecta. ¿Por qué? No solo obtengo una ventana incorrecta, es inutilizable si faltan WS_VSCROLL y WS_HSCROLL

style = WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE |
    ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN;
SetWindowLong(wnd, GWL_STYLE, style);
¿Fue útil?

Solución

Algunos estilos de control no se pueden cambiar después de la creación de la ventana. El estilo ES_AUTOHSCROLL (que esencialmente controla el ajuste de palabras) es uno de ellos; esto se afirma (algo indirectamente) en la sección de MSDN en Editar estilos de control . Puede establecer los bits con SetWindowLong (), pero el control los ignorará o se comportará de manera errática.

La única forma de hacerlo limpiamente es recrear el control de edición utilizando los estilos requeridos. En realidad, esto es lo que hace el Bloc de notas cuando alterna el "Ajuste de Word" configuración.

Otros consejos

Puede hacerlo con la función ShowScrollBar (). También puede encontrar interesante la función EnableScrollBar () si desea habilitar / deshabilitar las barras de desplazamiento de una ventana. Saludos cordiales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top