Como Programatically acrescentar texto para um controlo de edição

Traduções de Artigos Traduções de Artigos
Artigo: 109550 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

Aplicações baseadas no Windows, muitas vezes, utilizar controlos de edição para mostrar texto. Por vezes, estas aplicações tem de anexar texto a fim de um controlo de edição em vez de substituir o texto existente. Existem duas formas diferentes para o fazer no Windows:
  • Utilize as mensagens EM_SETSEL e EM_REPLACESEL.
  • Utilize a mensagem EM_SETSEL com as funções da área de transferência para anexar texto a memória intermédia do controlo de edição.

Mais Informação

NOTA: Uma vez que 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 seguinte utiliza a macro Win32 para determinar durante a compilação se se tratar de uma aplicação de 16 ou 32 bits.

A mensagem EM_SETSEL pode ser utilizada para colocar um intervalo de texto seleccionado num controlo de edição do Windows. Se as posições iniciais e finais do intervalo estiverem configuradas para a mesma posição, não é efectuada nenhuma selecção e um sinal de omissão pode ser colocado nessa posição. Para colocar um sinal de omissão no fim do texto de um controlo de edição do Windows e definir o foco para o controlo de edição, efectue 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 do acento circunflexo é colocado na extremidade do controlo de edição, pode utilizar o EM_REPLACESEL para anexar texto a controlo de edição. Uma aplicação envia uma mensagem EM_REPLACESEL para substituir a selecção actual num controlo de edição com o texto especificado pelo parâmetro lpszReplace (lParam). Porque não existe nenhuma selecção actual, o texto de substituição é inserido no acento circunflexo localização actual. Este exemplo define a selecção até ao fim do controlo de edição e insere o texto na memória intermédia:
   #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 forma para inserir texto num controlo de edição é utilizar a área de transferência do Windows. Se a aplicação tiver a área de transferência abrir ou localiza conveniente para abrir a área de transferência e copia o texto para a área de transferência, em seguida, pode enviar a mensagem WM_PASTE para controlo de edição para anexar texto. Obviamente, quaisquer dados que estavam na área de transferência serão perdidos.

Antes de enviar a mensagem WM_PASTE, o acento circunflexo tem de ser colocado no fim do texto de controlo de edição utilizando a mensagem EM_SETSEL. Abaixo é "pseudo" código mostra como implementar este 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 "pseudo" acrescenta texto ao fim do controlo de edição. Tenha em atenção que os dados na área de transferência tem de ser no formato CF_TEXT.

Propriedades

Artigo: 109550 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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