États du bouton

Cette section explique comment la sélection d’un bouton modifie son état et comment l’application doit répondre.

La section comprend les rubriques suivantes :

Sélection du bouton

L’utilisateur peut sélectionner un bouton de trois manières : en cliquant dessus avec la souris, en tablant dessus, puis en appuyant sur la touche ENTRÉE, ou (si le bouton fait partie d’un groupe défini par le style WS_GROUP ) en appuyant sur le bouton sélectionné dans le groupe et en utilisant les touches de direction pour se déplacer dans ce groupe. Les deux méthodes de tabulation font partie de l’interface clavier prédéfinie fournie par le système. Pour obtenir une description complète de cette interface, consultez Boîtes de dialogue.

La sélection d’un bouton entraîne généralement les événements suivants :

  • Le système donne au bouton le focus du clavier.
  • Le bouton envoie un message à sa fenêtre parente pour l’informer de la sélection.
  • La fenêtre parente (ou le système) envoie au bouton un message pour modifier son état.
  • La fenêtre parente (ou le système) repeint le bouton pour refléter son nouvel état.

Éléments d’un état de bouton

L’état d’un bouton peut être caractérisé par son état focus, son état push et son état case activée.

État du focus

L’état focus s’applique à une zone de case activée, une case d’option, un bouton pousseur ou un bouton dessiné par le propriétaire. Un bouton reçoit le focus clavier lorsque l’utilisateur le sélectionne et le perd lorsque l’utilisateur sélectionne un autre contrôle. Un seul contrôle peut avoir le focus clavier à la fois.

Lorsqu’un bouton a le focus clavier, le système met généralement en surbrillance le texte, l’icône ou l’image bitmap d’un bouton en l’entourant d’une ligne en pointillés. En outre, un bouton pousseur a une bordure sombre lourde lorsqu’il a le focus. Le système modifie automatiquement la mise en surbrillance d’un bouton automatique, mais l’application doit modifier la mise en surbrillance d’un bouton non automatique en envoyant des messages.

État push

L’état Push s’applique à un bouton push, à un case activée, à une case d’option ou à un case activée à trois états, mais ne s’applique pas à d’autres boutons. L’état push d’un bouton peut être poussé ou non. Lorsqu’un bouton pousseur (ou n’importe quel bouton avec le style BS_PUSHLIKE ) est enfoncé, le bouton est dessiné comme un bouton enfoncé. Lorsqu’elle n’est pas poussée, elle est dessinée sous forme de bouton levé. Lorsque vous cliquez sur une zone de case activée, une case d’option ou une zone de case activée à trois états, l’arrière-plan du bouton est grisé. Lorsqu’il n’est pas poussé, l’arrière-plan du bouton n’est pas grisé.

État de vérification

L’état case activée s’applique à une zone de case activée, à une case d’option ou à une zone de case activée à trois états, mais ne s’applique pas aux autres boutons. L’état peut être coché, effacé ou (pour les zones de case activée à trois états) indéterminé. Une case case activée est cochée lorsqu’elle contient une marque de case activée et est désactivée lorsqu’elle ne le fait pas. Une case d’option est cochée lorsqu’elle contient un point noir ; il est clair quand il ne le fait pas. Une case de case activée à trois états est cochée lorsqu’elle contient une marque case activée, est effacée lorsqu’elle ne le fait pas et est indéterminée lorsqu’elle contient une zone grisée. Le système modifie automatiquement l’état case activée d’un bouton automatique, mais l’application doit modifier l’état case activée d’un bouton non automatique.

Modifications apportées à l’état d’un bouton

Lorsque l’utilisateur sélectionne un bouton, il est généralement nécessaire de modifier un ou plusieurs éléments d’état du bouton. Le système modifie automatiquement l’état du focus pour tous les types de boutons, l’état push pour les boutons ou les boutons avec le style BS_PUSHLIKE et l’état case activée pour tous les boutons automatiques. L’application doit apporter toutes les autres modifications d’état, en tenant compte du type, du style et de l’état actuel du bouton. La liste suivante montre les éléments d’état qui doivent être modifiés pour chaque type de bouton :

  • Une zone de case activée doit modifier l’état case activée.
  • Une case d’option doit modifier l’état case activée. Il peut également être nécessaire de modifier l’état case activée d’autres cases d’option du même groupe pour garantir la nature mutuellement exclusive des cases d’option.
  • Étant donné que l’état d’un bouton dessiné par le propriétaire dépend de l’application, ce que l’application doit modifier dans le bouton peut varier. Aucun élément d’une zone de groupe ne doit être modifié, car les utilisateurs ne peuvent pas sélectionner de zones de groupe.

Une application peut déterminer l’état d’un bouton en lui envoyant un message BM_GETCHECK ou BM_GETSTATE ; l’application peut définir l’état d’un bouton en lui envoyant un message BM_SETCHECK ou BM_SETSTATE .