Rolando programaticamente um controle de edição do Windows
-
12-12-2019 - |
Pergunta
Existe alguma maneira de rolar programaticamente um controle de edição de linha única no Windows?
Por exemplo, se o texto em um controle de edição for muito grande para ser exibido de uma só vez, o comportamento padrão quando o controle de edição receber o foco será selecionar todo o texto e mostrar o final do texto.Em vez disso, gostaria de mostrar o início do texto (deixando todo o texto selecionado).
Solução
Embora (aparentemente) não haja API para rolar até o início e selecionar todo o texto, parece funcionar para simular as teclas digitadas que fariam o mesmo:
#ifndef CTRL
#define CTRL(x) (x&037)
#endif
SendMessage(edit_handle, WM_KEYDOWN, VK_HOME, 0);
SendMessage(edit_handle, WM_CHAR, CTRL('A'), 0);
Outras dicas
Você pode chamar Setscrollpos ou envie o Wm_vscroll / Wm_hscroll mensagem diretamente para a janela.Você pode encontrar a lista completa de funções de rolagem aqui .