Mensaje WM_GETTEXTLENGTH
Definición
WM_GETTEXTLENGTH wParam = 0; // no se usa; debe ser cero lParam = 0; // no se usa; debe ser cero
El mensaje WM_GETTEXTLENGTH se envía para determinar la longitud en caracteres del texto asociado a una ventana. La longitud no incluye el carácter nulo de terminación.
Descripción
Este mensaje no tiene parámetros.
Valor de retorno
El valor de retorno en la longitud de la cadena, en caracteres, excluyendo el terminador nulo.
Acción por defecto
La función DefWindowProc devuelve la longitud en caracteres del texto. Bajo algunas condiciones, ese valor pude ser mayor que la longitud real del texto. Para mayor detalle, ver la sección de observaciones.
Observaciones
Para un control edit, el texto a copiar es el contenido del control edit. Para un combo box, el texto es el contenido del control edit (o del control static) asociado al combo box. Par un button, el texto es el nombre del button. Para otras ventanas, es el título de la ventana. Para determinar la longitud de un ítem en un list box, se puede usar el mensaje LB_GETTEXTLEN.
Bajo algunas condiciones, la función DefWindowProc puede retornar un valor más grande que la longitud del texto. Esto ocurre con ciertas mezclas de ANSI y Unicode, y es debido a que el sistema operativo permite la posible existencia de juegos de caracteres de doble byte (DBCS) en el texto. El valor de retorno, sin embargo, será siempre por lo menos tan largo como el tamaño actual del texto; y puede ser usado siempre como guía para obtener memoria para el buffer. Este comportamiento puede ocurrir cuando una aplicación use funciones ANSI y diálogos comunes, junto con Unicode.
Para obtener la longitud exacta del texto, usar los mensajes WM_GETTEXT, LB_GETTEXT o CB_GETLBTEXT, o la función GetWindowText.