WS_VSCROLL, obras de estilo createWindow, SetWindowLong doesnt
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);
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.