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

Foi útil?

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 .

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