Partilhar via


Estados dos botões

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

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

Seleção de botões

O usuário pode selecionar um botão de três maneiras: clicando nele com o mouse, tabulando para ele e, em seguida, pressionando a tecla ENTER, ou (se o botão fizer parte de um grupo definido pelo estilo WS_GROUP) tabulando para o botão selecionado no grupo e usando as teclas de seta 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 dá ao botão o foco do teclado.
  • O botão envia uma mensagem à janela pai 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) repinta 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 pressão e estado de verificação.

Estado de foco

O estado de foco aplica-se a uma caixa de seleção, botão de opção, botão de pressão 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 de cada vez.

Quando um botão tem o foco do teclado, o sistema normalmente destaca o texto, ícone ou bitmap de um botão cercando-o com uma linha pontilhada. Além disso, um botão 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 de envio

O estado de pressão aplica-se a um botão de pressão, 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 pressão de um botão pode ser pressionado ou não pressionado. Quando um botão (ou qualquer botão com o estilo BS_PUSHLIKE) é pressionado, o botão é desenhado como um botão afundado. Quando não é pressionado, é desenhado como um botão levantado. Quando uma caixa de seleção, botão de opção ou caixa de seleção de três estados é clicada, o plano de fundo do botão fica acinzentado. Quando não é pressionado, o fundo do botão não fica acinzentado.

Estado de verificação

O estado de verificação aplica-se 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 marcado, 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 consegue. Um botão de opção é verificado quando contém um ponto preto; é apurado 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 contém e é indeterminada quando contém uma caixa cinza. 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 no estado de um 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ões, o estado de pressão para botões ou botões com o estilo BS_PUSHLIKE e o estado de verificação para todos os botões automáticos. O aplicativo deve fazer todas as outras alterações de estado, levando em consideração 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 verificaçã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, porque os usuários não podem selecionar caixas de grupo.

Uma aplicação pode determinar o estado de um botão enviando-lhe uma mensagem BM_GETCHECK ou BM_GETSTATE; O aplicativo pode definir o estado de um botão, enviando-lhe uma mensagem BM_SETCHECK ou BM_SETSTATE.