[C con Clase] Control EDIT

Steven Davidson steven en conclase.net
Sab Ago 18 20:58:55 CEST 2007


Hola David,

El pasado 2007-08-18 17:32:13, david mona palacio escribió:

dmp> Buenas a todos.
dmp> Soy realmente muy nuevo en el c++ y tengo un problema que para muchos podra
dmp> ser tonto, el problema es el siguiente:
dmp> tengo dos controles edit o un control edit y un listbox, y un boton aceptar;
dmp> necesito la accion del boton aceptar para pasar el numero que se encuentra
dmp> en un edit al otro edit o al listbox.

La solución es obtener la cadena en el primer cuadro de edición y enviarla al segundo cuadro de edición o de listado. Como quieres que tal lógica se ejecute al presionar el botón "aceptar", las sentencias aparecerán al procesar el mensaje WM_COMMAND en el procedimiento de la ventana pariente.

Para obtener la cadena del cuadro de edición, envía el mensaje 'WM_GETTEXT'. Como necesitas la cantidad de caracteres a copiar, sugiero enviar previamente el mensaje 'WM_GETTEXTLENGTH'. También podríamos usar las funciones 'GetWindowText()' y 'GetWindowTextLength()', pero necesitas el manipulador de ventana de los controles.

Para enviar la cadena al segundo cuadro de edición, envíala junto al mensaje 'WM_SETTEXT'. Si tienes el manipulador de ventana, puedes invocar la función 'SetWindowText()'.

Si quieres enviar una cadena a un control de listado, entonces tendrás que enviar el mensaje 'LB_ADDSTRING' o algún otro mensaje parecido.

El código será parecido al siguiente:

case WM_COMMAND:
if( LOWORD(wParam) == IDC_ACEPTAR && HIWORD(wParam) == BN_CLICKED )
{
  int nCant;
  TCHAR *pszMensaje;

  // Conseguir la cadena del primer cuadro de edición
  nCant = SendDlgItemMessage( hPariente, IDC_EDIT1, WM_GETTEXTLENGTH, 0, 0 );
  pszMensaje = new TCHAR[nCant+1];

  SendDlgItemMessage( hPariente, IDC_EDIT1, WM_GETTEXT, nCant+1, pszMensaje );

  // Asignar la cadena al segundo cuadro de edición
  SendDlgItemMessage( hPariente, IDC_EDIT2, WM_SETTEXT, 0, pszMensaje );

  return 0;
}
break;


Espero que esto te ayude.

Steven


Más información sobre la lista de distribución Cconclase