Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os aplicativos geralmente usam controles estáticos para rotular outros controles ou para separar um grupo de controles. Embora os controles estáticos sejam janelas filhas, eles não podem ser selecionados. Portanto, eles não podem receber o foco do teclado e não podem ter uma interface de teclado. Um controle estático que tem o estilo SS_NOTIFY recebe a entrada do mouse, notificando a janela pai quando o usuário clica ou clica duas vezes no controle. Os controles estáticos pertencem à classe de janela STIC.
Embora os controlos estáticos possam ser usados em janelas sobrepostas, janelas de pop-up e janelas filhas, eles são projetados para uso em caixas de diálogo, onde o sistema padroniza seus comportamentos. Usando controles estáticos fora das caixas de diálogo, um desenvolvedor aumenta o risco de que o aplicativo possa se comportar de maneira não padrão. Normalmente, um desenvolvedor usa controles estáticos em caixas de diálogo ou usa o estilo SS_OWNERDRAW para criar controles estáticos personalizados.
Os tópicos a seguir são discutidos nesta seção.
- tipos de controle estático
- de processamento de mensagens padrão de controle estático
Tipos de controle estático
Existem quatro tipos de controles estáticos. Cada tipo tem um ou mais Estilos de Controle Estático.
- Controlo estático gráfico simples
- Controlo Estático de Texto
- de controle estático de imagem
- Owner-Drawn Controlo estático
Controlo estático gráfico simples
Um controle estático gráfico simples exibe um quadro ou um retângulo preenchido. Um quadro pode ser desenhado em vários estilos, incluindo preto, cinza ou branco. Além disso, um quadro pode ser desenhado com um estilo gravado para dar-lhe uma aparência tridimensional. Os estilos de quadro incluem SS_BLACKFRAME, SS_GRAYFRAME, SS_WHITEFRAME, SS_ETCHEDHORZ, SS_ETCHEDVERT e SS_ETCHEDFRAME.
Um retângulo pode ser preenchido com cor em um dos três estilos: preto, cinza ou branco. Esses estilos são definidos pelas constantes SS_BLACKRECT, SS_GRAYRECT e SS_WHITERECT.
Os estilos gráficos não podem ser combinados.
Controle estático de texto
Um controle estático de texto exibe texto em um retângulo em um dos cinco estilos:
- alinhado à esquerda sem quebra automática de texto
- alinhado à esquerda com quebra automática de texto
- centrado
- alinhado à direita
- simples
Esses estilos são definidos pelas constantes SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT e SS_SIMPLE, respectivamente. O sistema reorganiza o texto nesses controles de maneiras predefinidas, exceto para o texto "simples", que não é reorganizado.
Um aplicativo pode alterar o texto em um controle estático de texto a qualquer momento usando a função SetWindowText ou a mensagem WM_SETTEXT.
O sistema exibe o máximo de texto possível no controlo estático e corta o que não cabe. Para calcular um tamanho apropriado para o controle, recupere as métricas de fonte para o texto. Para obter mais informações sobre fontes e sobre as métricas de fonte, consulte Fontes e Texto.
Por predefinição, o texto da janela para um controlo estático, como para outros controlos, pode conter um ampersand que define o caractere seguinte como a tecla de acesso rápido para o controlo (ou, no caso da maioria dos controlos estáticos, para o controlo que rotula, que é o próximo controlo na ordem de tabulação). Se desejar exibir ampersands no texto em vez de usá-los para definir atalhos, inclua o estilo SS_NOPREFIX.
Controle estático de imagem
Um controle estático de imagem pode exibir bitmaps, ícones (incluindo ícones animados) ou metaarquivos avançados. O tipo de gráfico que um determinado controle estático exibe depende do estilo do controle: SS_BITMAP, SS_ICON ou SS_ENHMETAFILE. Um aplicativo especifica o estilo quando cria o controle e também especifica um identificador para o bitmap, ícone ou metarquivo para o controle a ser exibido. Depois que o controle é criado, um aplicativo pode associar um gráfico diferente ao controle enviando-lhe uma mensagem STM_SETIMAGE, especificando um identificador para o novo objeto gráfico. Um aplicativo pode recuperar um identificador para o objeto gráfico atualmente associado a um controle estático enviando-lhe uma mensagem STM_GETIMAGE. Um aplicativo envia mensagens para um controle estático usando a funçãoSendDlgItemMessage.
Owner-Drawn Controlo estático
Usando o estilo SS_OWNERDRAW, um aplicativo pode assumir a responsabilidade pela pintura de um controle estático. A janela pai de um controle estático desenhado pelo proprietário (seu proprietário) recebe uma mensagem WM_DRAWITEM sempre que o controle estático precisa ser pintado. A mensagem inclui um ponteiro para uma estrutura de DRAWITEMSTRUCT que contém informações que a janela do proprietário usa ao desenhar o controle.
Controle estático Processamento de mensagens padrão
O procedimento de janela para a classe de janela de controle estático predefinida executa o processamento padrão para todas as mensagens que o procedimento de controle estático não processa. Quando o controle estático retorna FALSE para qualquer mensagem, o procedimento de janela predefinido verifica as mensagens e executa a ação padrão descrita na tabela a seguir. Na tabela, um controle estático de texto é um controle estático com o estilo SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT ou SS_SIMPLE.
| Mensagem | Ação padrão |
|---|---|
| WM_CREATE | Carrega o objeto gráfico e dimensiona a janela para o tamanho do objeto, para controles estáticos gráficos. Não executa nenhuma ação para outros controles estáticos. |
| WM_DESTROY | Libera e destrói qualquer objeto gráfico, para controles estáticos gráficos. Não executa nenhuma ação para outros controles estáticos. |
| WM_ENABLE | Repinta controles estáticos visíveis. |
| WM_ERASEBKGND | Retorna TRUE, indicando que o controle apaga o plano de fundo. |
| WM_GETDLGCODE | Devolve DLGC_STATIC. |
| WM_GETFONT | Retorna um identificador para a fonte para controles estáticos de texto. |
| WM_GETTEXT | Retorna o número de caracteres copiados. |
| WM_GETTEXTLENGTH | Retorna o comprimento, em caracteres, do texto para um controle estático de texto. |
| WM_LBUTTONDBLCLK | Envia à janela pai um código de notificação STN_DBLCLK se o estilo de controle for SS_NOTIFY. |
| WM_LBUTTONDOWN | Envia à janela pai um código de notificação STN_CLICKED se o estilo de controle for SS_NOTIFY. |
| WM_NCLBUTTONDBLCLK | Envia à janela pai um código de notificação STN_DBLCLK se o estilo de controle for SS_NOTIFY. |
| WM_NCLBUTTONDOWN | Envia à janela pai um código de notificação STN_CLICKED se o estilo de controle for SS_NOTIFY. |
| WM_NCHITTEST | Retorna HTCLIENT se o estilo de controle for SS_NOTIFY; caso contrário, retorna HTTRANSPARENT. |
| WM_PAINT | Repinta o controle. |
| WM_SETFONT | Define a fonte e repinta os controlos estáticos de texto. |
| WM_SETTEXT | Define o texto e repinta para controles estáticos de texto. |
O procedimento de janela predefinido passa todas as outras mensagens para DefWindowProc para processamento padrão.