Pergunta

Quando eu faço

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

está tudo bem, no entanto, se eu remover o WS_VSCROLL e WS_HSCROLL seguida, fazer a seguir, eu não obtê-los, assim, ter a janela incorreta. Por quê? Não só eu recebo uma janela incorreta é inutilizável se tanto WS_VSCROLL e WS_HSCROLL estão faltando

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

Solução

Alguns estilos de controle não pode ser alterado após a criação da janela. O estilo ES_AUTOHSCROLL (que essencialmente controla o agrupamento de palavras) é um deles; tal seja declarado (um tanto indiretamente) pela seção MSDN on Editar Controle . Você pode definir os bits usando SetWindowLong (), mas o controle será ou ignorá-los ou se comportar de forma irregular.

A única maneira de fazer isso de forma limpa é recriar o controle de edição usando os estilos necessários. Este é realmente o que o bloco de notas faz quando você alternar a configuração de "Word Wrap".

Outras dicas

Você pode fazê-lo com a função ShowScrollBar (). Você também pode achar interessante a EnableScrollBar function () se você quiser ativar / desativar as barras de rolagem de uma janela. Com os melhores cumprimentos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top