Acerca de los controles estáticos

Las aplicaciones a menudo usan controles estáticos para etiquetar otros controles o para separar un grupo de controles. Aunque los controles estáticos son ventanas secundarias, no se pueden seleccionar. Por lo tanto, no pueden recibir el foco de teclado y no pueden tener una interfaz de teclado. Un control estático que tiene el _ estilo SS Notify recibe la entrada del mouse y notifica a la ventana primaria cuando el usuario hace clic en el control o hace doble clic en él. Los controles estáticos pertenecen a la clase de ventana estática.

Aunque los controles estáticos se pueden usar en ventanas superpuestas, emergentes y secundarias, están diseñados para usarse en cuadros de diálogo, en los que el sistema normaliza su comportamiento. Mediante el uso de controles estáticos fuera de los cuadros de diálogo, un desarrollador aumenta el riesgo de que la aplicación se comporte de manera no estándar. Normalmente, un desarrollador usa controles estáticos en cuadros de diálogo o usa el _ estilo de OWNERDRAW SS para crear controles estáticos personalizados.

Los temas siguientes se describen en esta sección.

Tipos de control estáticos

Hay cuatro tipos de controles estáticos. Cada tipo tiene uno o varios estilos de control estáticos.

Control estático de gráficos simple

Un control estático de gráficos simple muestra un marco o un rectángulo relleno. Un marco puede dibujarse en un número de estilos, incluido negro, gris o blanco. Además, se puede dibujar un marco con un estilo grabado para darle un aspecto tridimensional. Entre los estilos de marco se incluyen SS _ BLACKFRAME, SS _ GRAYFRAME, SS _ WHITEFRAME, SS _ ETCHEDHORZ, SS _ ETCHEDVERT y SS _ ETCHEDFRAME.

Un rectángulo se puede rellenar con color en uno de estos tres estilos: negro, gris o blanco. Estos estilos se definen mediante las constantes SS _ BLACKRECT, SS _ GRAYRECT y SS _ WHITERECT.

Los estilos gráficos no se pueden combinar.

Control estático de texto

Un control estático de texto muestra texto en un rectángulo en uno de cinco estilos:

  • alineado a la izquierda sin ajuste de palabra
  • alineado a la izquierda con ajuste de palabra
  • centrado
  • alineado a la derecha
  • simple

Estos estilos se definen mediante las constantes SS _ LEFTNOWORDWRAP, SS _ left, SS _ Center, SS _ right y SS _ simple, respectivamente. El sistema reorganiza el texto de estos controles de maneras predefinidas, salvo por el texto "simple", que no se reorganiza.

Una aplicación puede cambiar el texto de un control estático de texto en cualquier momento mediante la función SetWindowText o el mensaje de WM _ SETTEXT .

El sistema muestra tanto texto como puede en el control estático y recorta el contenido que no cabe. Para calcular el tamaño adecuado para el control, recupere las métricas de fuente del texto. Para obtener más información sobre fuentes y métricas de fuentes, vea fuentes y texto.

De forma predeterminada, el texto de la ventana de un control estático, como para otros controles, puede contener una y comercial que define el siguiente carácter como tecla de método abreviado para el control (o, en el caso de la mayoría de los controles estáticos, para el control que etiqueta, que es el siguiente control en el orden de tabulación). Si desea mostrar los signos de y comercial en el texto en lugar de usarlos para definir los accesos directos, incluya el _ estilo SS noprefix.

Control estático de imagen

Un control estático de imagen puede mostrar mapas de bits, iconos (incluidos iconos animados) o metaarchivos mejorados. El tipo de gráfico que muestra un control estático determinado depende del estilo del control: SS _ Bitmap, SS _ Icon o SS _ ENHMETAFILE. Una aplicación especifica el estilo cuando crea el control y también especifica un identificador para el mapa de bits, el icono o el metarchivo del control que se va a mostrar. Una vez creado el control, una aplicación puede asociar un gráfico diferente al control mediante el envío de un mensaje STM _ SETIMAGE , que especifica un identificador para el nuevo objeto gráfico. Una aplicación puede recuperar un identificador para el objeto gráfico asociado actualmente a un control estático mediante el envío de un mensaje de STM _ GetImage . Una aplicación envía mensajes a un control estático mediante la función SendDlgItemMessage .

Owner-Drawn control estático

Al usar el _ estilo de OWNERDRAW SS, una aplicación puede asumir la responsabilidad de dibujar un control estático. La ventana primaria de un control estático dibujado por el propietario (su propietario) recibe un mensaje de Windows de WM _ siempre que es necesario pintar el control estático. El mensaje incluye un puntero a una estructura drawitemstruct ( que contiene información que la ventana propietaria utiliza al dibujar el control.

Procesamiento de mensajes predeterminados de controles estáticos

El procedimiento de ventana para la clase de ventana de control estática predefinida realiza el procesamiento predeterminado para todos los mensajes que no procesa el procedimiento de control estático. Cuando el control estático devuelve false para cualquier mensaje, el procedimiento de ventana predefinido comprueba los mensajes y realiza la acción predeterminada que se describe en la tabla siguiente. En la tabla, un control estático de texto es un control estático con el estilo SS _ LEFTNOWORDWRAP, SS _ left, SS _ Center, SS _ right o SS _ simple.

Message Acción predeterminada
creación de WM _ Carga el objeto gráfico y ajusta el tamaño de la ventana al tamaño del objeto, para los controles estáticos gráficos. No realiza ninguna acción para otros controles estáticos.
destrucción de WM _ Libera y destruye cualquier objeto gráfico, para los controles estáticos gráficos. No realiza ninguna acción para otros controles estáticos.
_habilitación de WM Vuelve a dibujar controles estáticos visibles.
ERASEBKGND de WM _ Devuelve true, que indica que el control borra el fondo.
GETDLGCODE de WM _ Devuelve DLGC _ static.
GETFONT de WM _ Devuelve un identificador para la fuente de los controles estáticos de texto.
GETTEXT de WM _ Devuelve el número de caracteres copiados.
GETTEXTLENGTH de WM _ Devuelve la longitud, en caracteres, del texto de un control estático de texto.
LBUTTONDBLCLK de WM _ Envía a la ventana primaria un código de notificación STN _ DBLCLK si el estilo de control es SS _ Notify.
LBUTTONDOWN de WM _ Envía a la ventana primaria un código de notificación en el que se _ hizo clic STN si el estilo de control es SS _ Notify.
NCLBUTTONDBLCLK de WM _ Envía a la ventana primaria un código de notificación STN _ DBLCLK si el estilo de control es SS _ Notify.
NCLBUTTONDOWN de WM _ Envía a la ventana primaria un código de notificación en el que se _ hizo clic STN si el estilo de control es SS _ Notify.
NCHITTEST de WM _ Devuelve HTCLIENT si el estilo de control es SS _ NOTIFY; de lo contrario, devuelve HTTRANSPARENT.
pintura de WM _ Vuelve a dibujar el control.
WM _ Establece la fuente y los redibujados para los controles estáticos de texto.
SETTEXT de WM _ Establece el texto y los redibujados para los controles estáticos de texto.

 

El procedimiento de ventana predefinido pasa todos los demás mensajes a DefWindowProc para el procesamiento predeterminado.