Como anexar programaticamente o texto em um controle de edição

Traduções deste artigo Traduções deste artigo
ID do artigo: 109550 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

Aplicativos baseados no Windows geralmente usam controles de edição para exibir texto. Às vezes, esses aplicativos precisam acrescentar texto ao final de um controle de edição em vez de substituir o texto existente. Há duas maneiras de fazer isso no Windows:
  • Use as mensagens EM_SETSEL e EM_REPLACESEL.
  • Use a mensagem EM_SETSEL com as funções da área de transferência para acrescentar texto para buffer do controle de edição.

Mais Informações

Observação: Como os parâmetros de mensagem para a mensagem EM_SETSEL são diferentes entre a versão de 32 bits e a versão de 16 bits, o código a seguir usa a macro Win32 para determinar em tempo de compilação se este for um aplicativo de 16 ou 32 bits.

A mensagem EM_SETSEL pode ser usada para colocar um intervalo de texto selecionado em um controle de edição do Windows. Se as posições inicial e final do intervalo estão definidas para a mesma posição, nenhuma seleção é feita e um acento circunflexo pode ser colocado naquela posição. Coloque um cursor no final do texto em um controle de edição do Windows e definir o foco para o controle de edição, faça o seguinte:
   HWND hEdit = GetDlgItem (hDlg, ID_EDIT);
   int ndx = GetWindowTextLength (hEdit);
   SetFocus (hEdit);
   #ifdef WIN32
      SendMessage (hEdit, EM_SETSEL, (WPARAM)ndx, (LPARAM)ndx);
   #else
      SendMessage (hEdit, EM_SETSEL, 0, MAKELONG (ndx, ndx));
   #endif
depois que o cursor é colocado no final no controle de edição, você pode usar o EM_REPLACESEL para acrescentar texto para o controle de edição. Um aplicativo envia uma mensagem EM_REPLACESEL para substituir a seleção atual em um controle de edição com o texto especificado pelo parâmetro lpszReplace (lParam). Porque não há nenhuma seleção atual, o texto de substituição é inserido no local do cursor atual. Este exemplo define a seleção até o final do controle de edição e insere o texto no buffer:
   #ifdef WIN32
      SendMessage (hEdit, EM_SETSEL, (WPARAM)ndx, (LPARAM)ndx);
   #else
      SendMessage (hEdit, EM_SETSEL, 0, MAKELONG (ndx, ndx));
   #endif
      SendMessage (hEdit, EM_REPLACESEL, 0, (LPARAM) ((LPSTR) szBuffer));
				
outra maneira de inserir texto em um controle de edição é usar a área de transferência da Windows. Se o aplicativo tem a área de transferência abrir ou localiza conveniente abrir a área de transferência e copia o texto para a área de transferência, em seguida, ele pode enviar a mensagem WM_PASTE ao controle de edição para acrescentar texto. Obviamente, quaisquer dados que estavam na área de transferência serão perdidos.

Antes de enviar a mensagem WM_PASTE, o cursor deve ser colocado no final do texto de controle de edição usando a mensagem EM_SETSEL. Abaixo é código "pseudo" que mostra como implementar esse método:
   OpenClipBoard () ;
   EmptyClipBoard() ;
   SetClipBoardData() ;

   #ifdef WIN32
      SendMessage (hEdit, EM_SETSEL, (WPARAM)ndx, (LPARAM)ndx);
   #else
      SendMessage (hEdit, EM_SETSEL, 0, MAKELONG (ndx, ndx));
   #endif
      SendMessage (hEdit, WM_PASTE,   0, 0L);
				
este código de "pseudo" acrescentará texto ao final do controle de edição. Observe que os dados na área de transferência devem estar no formato CF_TEXT.

Propriedades

ID do artigo: 109550 - Última revisão: segunda-feira, 11 de julho de 2005 - Revisão: 1.3
A informação contida neste artigo aplica-se a:
  • Microsoft Platform Software Development Kit-January 2000 Edition
  • Microsoft Windows Software Development Kit 3.1
Palavras-chave: 
kbmt kbctrl kbeditctrl kbhowto KB109550 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 109550

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com