Como interagir com a seleção atual

O usuário pode selecionar texto em um controle de edição avançada usando o mouse ou o teclado. A seleção atual é o intervalo de caracteres selecionados ou a posição do ponto de inserção se nenhum caractere for selecionado. Um aplicativo pode obter informações sobre a seleção atual, defini-la, determinar quando ela é alterada e mostrar ou ocultar o realce da seleção.

O que você precisa saber

Tecnologias

Pré-requisitos

  • C/C++
  • Programação da interface do usuário do Windows

Instruções

Interaja com a seleção atual

Para determinar a seleção atual em um controle de edição avançada, use a mensagem EM_EXGETSEL. Para definir a seleção atual, use a mensagem EM_EXSETSEL. A estrutura CHARRANGE é usada com ambas as mensagens e especifica um intervalo de caracteres. Para recuperar informações sobre o conteúdo da seleção atual, você pode usar a mensagem EM_SELECTIONTYPE.

Um aplicativo pode detectar quando a seleção atual é alterada processando o código de notificação EN_SELCHANGE. O código de notificação especifica uma estrutura SELCHANGE que contém informações sobre a nova seleção. Um controle rich edit envia esse código de notificação somente se você habilitá-lo usando a mensagem EM_SETEVENTMASK.

Por padrão, um controle de edição avançada mostra e oculta o realce da seleção quando ele ganha e perde o foco. Você pode mostrar ou ocultar o realce da seleção a qualquer momento usando a mensagem EM_HIDESELECTION. Por exemplo, um aplicativo pode fornecer uma caixa de diálogo Pesquisar para localizar texto em um controle de edição avançada. O aplicativo pode selecionar o texto correspondente sem fechar a caixa de diálogo, caso em que ele deve usar a mensagem EM_HIDESELECTION para realçar a seleção.

Assim como acontece com os controles de edição, você pode especificar o estilo de janela ES_NOHIDESEL para impedir que um controle de edição avançada oculte o realce da seleção quando ele perder o foco.

Como alternativa ao uso das mensagens EM_EXGETSEL e EM_EXSETSEL, você pode recuperar e definir a seleção atual usando as mensagens de controle EM_GETSEL e EM_SETSEL de edição. A mensagem EM_GETSEL empacota dois índices de caracteres de 16 bits em seu valor de retorno de 32 bits e, portanto, funciona apenas para seleções que se enquadram inteiramente nos primeiros 64K. No entanto, um controle de edição avançado nunca conterá mais de 32 mil caracteres de texto, a menos que você estenda esse limite usando a mensagem EM_LIMITTEXT ou EM_EXLIMITTEXT. Para seleções que se estendem além dos primeiros 64 KB de texto, a mensagem EM_GETSEL retorna –1. Nesse caso, você ainda pode usar os valores retornados em wParam e lParam para localizar os caracteres inicial e final da seleção.

Usando controles de edição avançada

Demonstração de controles comuns do Windows (CppWindowsCommonControls)