Cómo mediante programación anexar texto a un control de edición

Seleccione idioma Seleccione idioma
Id. de artículo: 109550 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

Las aplicaciones basadas en Windows suelen utilizan los controles de edición para mostrar texto. A veces estas aplicaciones necesitan anexar texto al final de un control de edición en lugar de reemplazar el texto existente. Hay dos formas diferentes para hacer esto en Windows:
  • Utilizar los mensajes EM_SETSEL y EM_REPLACESEL.
  • Utilice el mensaje EM_SETSEL con las funciones de Portapapeles para anexar texto al búfer del control de edición.

Más información

Nota: Como los parámetros de mensaje para el mensaje EM_SETSEL son diferentes entre la versión de 32 bits y la versión de 16 bits, el código siguiente utiliza la macro de Win32 para determinar en tiempo de compilación si se trata de una aplicación de 16 o 32 bits.

El mensaje EM_SETSEL puede utilizarse para colocar un intervalo de texto seleccionado en un control de edición de Windows. Si se establecen las posiciones inicial y final del intervalo a la misma posición, no realiza ninguna selección, y un símbolo de intercalación puede colocarse en esa posición. Para colocar un símbolo de intercalación al final del texto en un control de edición de Windows y establece el foco en el control de edición, haga lo siguiente:
   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
cuando se coloca el símbolo de intercalación al final en el control de edición, puede utilizar el EM_REPLACESEL para anexar texto al control de edición. Una aplicación envía un mensaje EM_REPLACESEL para reemplazar la selección actual en un control de edición con el texto especificado por el parámetro lpszReplace (lParam). Dado que no hay ninguna selección, el texto de reemplazo se inserta en la ubicación actual del símbolo de intercalación. En este ejemplo establece la selección al final del control de edición y inserta el texto en el búfer:
   #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));
				
otra forma de insertar texto en un control de edición consiste en utilizar el Portapapeles de Windows. Si la aplicación tiene el Portapapeles abrir o encuentra cómodo abrir el Portapapeles y copia el texto en el Portapapeles, puede enviar el mensaje WM_PASTE al control de edición para anexar texto. Por supuesto, se perderán los datos que estaba en el Portapapeles.

Antes de enviar el mensaje WM_PASTE, se debe colocar el símbolo de intercalación al final del texto de control de edición utilizando el mensaje EM_SETSEL. A continuación es "pseudo" código que muestra cómo 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);
				
"pseudo" de este código agrega texto al final del control de edición. Tenga en cuenta que los datos en el Portapapeles deben estar en formato CF_TEXT.

Propiedades

Id. de artículo: 109550 - Última revisión: lunes, 11 de julio de 2005 - Versión: 1.3
La información de este artículo se refiere a:
  • Microsoft Platform Software Development Kit-January 2000 Edition
  • Microsoft Windows Software Development Kit 3.1
Palabras clave: 
kbmt kbctrl kbeditctrl kbhowto KB109550 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 109550

Enviar comentarios

 

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