Compartilhar via


Estados de botão

Esta seção discute como selecionar um botão altera seu estado e como o aplicativo deve responder.

A seção consiste nos seguintes tópicos:

Seleção de botão

O usuário pode selecionar um botão de três maneiras: clicando nele com o mouse, pressionando-o e pressionando a tecla ENTER ou (se o botão fizer parte de um grupo definido pelo estilo WS_GROUP) ao tabbing para o botão selecionado no grupo e usando as teclas de direção para se mover dentro desse grupo. Os dois métodos de tabulação fazem parte da interface de teclado predefinida fornecida pelo sistema. Para obter uma descrição completa dessa interface, consulte Caixas de Diálogo.

A seleção de um botão normalmente causa os seguintes eventos:

  • O sistema fornece ao botão o foco do teclado.
  • O botão envia à janela pai uma mensagem para notificá-la da seleção.
  • A janela pai (ou o sistema) envia ao botão uma mensagem para alterar seu estado.
  • A janela pai (ou o sistema) reintiza o botão para refletir seu novo estado.

Elementos de um estado de botão

O estado de um botão pode ser caracterizado por seu estado de foco, estado de push e estado de verificação.

  • de Estado de Foco
  • de Estado de Push
  • verificar de estado

Estado de foco

O estado de foco se aplica a uma caixa de seleção, botão de opção, botão de push ou botão desenhado pelo proprietário. Um botão recebe o foco do teclado quando o usuário o seleciona e perde o foco quando o usuário seleciona outro controle. Apenas um controle pode ter o foco do teclado por vez.

Quando um botão tem o foco do teclado, o sistema normalmente realça o texto, o ícone ou o bitmap de um botão cercando-o com uma linha pontilhada. Além disso, um botão de push tem uma borda escura pesada quando tem o foco. O sistema altera automaticamente o realce de um botão automático, mas o aplicativo deve alterar o realce de um botão não automático enviando mensagens.

Estado do push

O estado de push aplica-se a um botão de push, caixa de seleção, botão de opção ou caixa de seleção de três estados, mas não se aplica a outros botões. O estado de push de um botão pode ser pressionado ou não pressionado. Quando um botão de pressionamento (ou qualquer botão com o estilo BS_PUSHLIKE) é pressionado, o botão é desenhado como um botão afundado. Quando não é pressionado, ele é desenhado como um botão acionado. Quando uma caixa de seleção, um botão de opção ou uma caixa de seleção de três estados é clicada, a tela de fundo do botão fica esmaeecido. Quando ele não é pressionado, a tela de fundo do botão não fica esmaeecido.

Estado de verificação

O estado de seleção se aplica a uma caixa de seleção, botão de opção ou caixa de seleção de três estados, mas não se aplica a outros botões. O estado pode ser verificado, desmarcado ou (para caixas de seleção de três estados) indeterminado. Uma caixa de seleção é marcada quando contém uma marca de seleção e é desmarcada quando não contém. Um botão de opção é verificado quando ele contém um ponto preto; ele é limpo quando não o faz. Uma caixa de seleção de três estados é marcada quando contém uma marca de seleção, é desmarcada quando não o faz e é indeterminado quando contém uma caixa esmaeçada. O sistema altera automaticamente o estado de verificação de um botão automático, mas o aplicativo deve alterar o estado de verificação de um botão não automático.

Alterações em um estado de botão

Quando o usuário seleciona um botão, geralmente é necessário alterar um ou mais dos elementos de estado do botão. O sistema altera automaticamente o estado de foco para todos os tipos de botão, o estado de push para botões ou botões de push com o estilo BS_PUSHLIKE e o estado de verificação de todos os botões automáticos. O aplicativo deve fazer todas as outras alterações de estado, levando em conta o tipo, o estilo e o estado atual do botão. A lista a seguir mostra os elementos de estado que devem ser alterados para cada tipo de botão:

  • Uma caixa de seleção deve alterar o estado de seleção.
  • Um botão de opção deve alterar o estado de verificação. Também pode ser necessário alterar o estado de verificação de outros botões de opção no mesmo grupo para garantir a natureza mutuamente exclusiva dos botões de opção.
  • Como o estado de um botão desenhado pelo proprietário depende do aplicativo, o que o aplicativo deve alterar no botão pode variar. Nenhum elemento de uma caixa de grupo deve ser alterado, pois os usuários não podem selecionar caixas de grupo.

Um aplicativo pode determinar o estado de um botão enviando-lhe uma mensagem de BM_GETCHECK ou BM_GETSTATE; o aplicativo pode definir o estado de um botão enviando-lhe uma mensagem de BM_SETCHECK ou BM_SETSTATE.