Partager via


Barres d’état (contrôles Windows)

Une barre d’état est une fenêtre horizontale située en bas d’une fenêtre parente dans laquelle une application peut afficher différents types d’informations d’état. La barre d’état peut être divisée en parties pour afficher plusieurs types d’informations. La capture d’écran suivante montre la barre d’état dans l’application Microsoft Windows Paint. Dans ce cas, la barre d’état contient le texte « Pour obtenir de l’aide, cliquez sur Rubriques d’aide dans le menu Aide ». La barre d’état est la zone située en bas de la fenêtre qui contient du texte d’aide et des informations de coordonnées.

capture d’écran de l’application de peinture, avec une barre d’état qui contient des conseils sur l’aide en ligne

Cette section inclut les rubriques suivantes.

Types et styles

La position par défaut d’une barre d’état se trouve en bas de la fenêtre parente, mais vous pouvez spécifier le style CCS_TOP pour qu’il apparaisse en haut de la zone cliente de la fenêtre parente.

Vous pouvez spécifier le style SBARS_SIZEGRIP pour inclure une poignée de dimensionnement à l’extrémité droite de la barre d’état.

Note

La combinaison des styles CCS_TOP et SBARS_SIZEGRIP n’est pas recommandée, car la poignée de dimensionnement résultante n’est pas fonctionnelle.

 

Taille et hauteur

La procédure de fenêtre pour la barre d’état définit automatiquement la taille et la position initiales de la fenêtre, en ignorant les valeurs spécifiées dans la fonction CreateWindowEx. La largeur est la même que celle de la zone cliente de la fenêtre parente. La hauteur est basée sur les métriques de la police actuellement sélectionnée dans le contexte de l’appareil de la barre d’état et sur la largeur des bordures de la fenêtre.

La procédure de fenêtre ajuste automatiquement la taille de la barre d’état chaque fois qu’elle reçoit un message WM_SIZE. En règle générale, lorsque la taille de la fenêtre parente change, le parent envoie un message WM_SIZE à la barre d’état.

Une application peut définir la hauteur minimale de la zone de dessin d’une barre d’état en envoyant à la fenêtre un message SB_SETMINHEIGHT, en pixels, en pixels. La zone de dessin n’inclut pas les bordures de la fenêtre. Une hauteur minimale est utile pour dessiner dans une barre d’état dessinée par le propriétaire. Pour plus d’informations, consultez Owner-Drawn barres d’état plus loin dans ce chapitre.

Vous récupérez les largeurs des bordures d’une barre d’état en envoyant à la fenêtre un message SB_GETBORDERS. Le message inclut l’adresse d’un tableau à trois éléments qui reçoit les largeurs.

barres d’état Multiple-Part

Une barre d’état peut avoir de nombreuses parties différentes, chacune affichant une ligne de texte différente. Vous divisez une barre d’état en parties en envoyant à la fenêtre un message SB_SETPARTS, en spécifiant le nombre de parties à créer et l’adresse d’un tableau d’entiers. Le tableau contient un élément pour chaque partie, et chaque élément spécifie la coordonnée cliente du bord droit d’une partie.

Une barre d’état peut avoir un maximum de 256 parties, bien que les applications utilisent généralement beaucoup moins que cela. Vous récupérez un nombre de parties dans une barre d’état, ainsi que la coordonnée du bord droit de chaque partie, en envoyant à la fenêtre un message SB_GETPARTS.

Opérations de texte de la barre d’état

Vous définissez le texte d’une partie d’une barre d’état en envoyant le message SB_SETTEXT, en spécifiant l’index de base zéro d’une partie, une adresse de la chaîne à dessiner dans la partie et la technique de dessin de la chaîne. La technique de dessin détermine si le texte a une bordure et, le cas échéant, le style de la bordure. Elle détermine également si la fenêtre parente est chargée de dessiner le texte. Pour plus d’informations, consultez la section Owner-Drawn Barres d’état ci-dessous.

Par défaut, le texte est aligné à gauche dans la partie spécifiée d’une barre d’état. Vous pouvez incorporer des tabulations (\ t) dans le texte au centre ou l’aligner à droite. Le texte à droite d’un seul caractère de tabulation est centré et le texte à droite d’un deuxième caractère de tabulation est aligné à droite.

Pour récupérer du texte à partir d’une barre d’état, utilisez les messages SB_GETTEXTLENGTH et SB_GETTEXT.

Si votre application utilise une barre d’état qui n’a qu’une seule partie, vous pouvez utiliser les WM_SETTEXT, les WM_GETTEXTet les messages WM_GETTEXTLENGTH pour effectuer des opérations de texte. Ces messages traitent uniquement la partie qui a un index de zéro, ce qui vous permet de traiter la barre d’état comme un contrôle de texte statique.

Pour afficher une ligne d’état sans créer de barre d’état, utilisez la fonction DrawStatusText. La fonction utilise les mêmes techniques pour dessiner l’état que la procédure de fenêtre pour la barre d’état, mais elle ne définit pas automatiquement la taille et la position des informations d’état. Lors de l’appel de la fonction, vous devez spécifier la taille et la position des informations d’état, ainsi que le contexte de l’appareil de la fenêtre dans laquelle la dessiner.

barres d’état Owner-Drawn

Vous pouvez définir des parties individuelles d’une barre d’état pour qu’elles soient des parties dessinées par le propriétaire. L’utilisation de cette technique vous donne plus de contrôle que vous le feriez autrement sur l’apparence de la partie fenêtre. Par exemple, vous pouvez afficher une bitmap plutôt que du texte ou dessiner du texte à l’aide d’une autre police.

Pour définir un composant de fenêtre en tant que dessin propriétaire, envoyez le message SB_SETTEXT à la barre d’état, en spécifiant la partie et la technique de dessin SBT_OWNERDRAW. Quand SBT_OWNERDRAW est spécifié, le paramètre lParam est une valeur définie par l’application 32 bits que l’application peut utiliser lors du dessin du composant. Par exemple, vous pouvez spécifier un handle de police, un handle bitmap, une adresse d’une chaîne, et ainsi de suite.

Lorsqu’une barre d’état doit dessiner une partie dessinée par le propriétaire, elle envoie le message WM_DRAWITEM à la fenêtre parente. Le paramètre wParam du message est l’identificateur de fenêtre enfant de la barre d’état, et le paramètre lParam est l’adresse d’une structure DRAWITEMSTRUCT. La fenêtre parente utilise les informations de la structure pour dessiner la partie. Pour une partie dessinée par le propriétaire d’une barre d’état, DRAWITEMSTRUCT contient les informations suivantes.

Membre Description
CtlType Indéfini; n’utilisez pas.
CtlID Identificateur de fenêtre enfant de la barre d’état.
itemID Index de base zéro de la partie à dessiner.
itemAction Indéfini; n’utilisez pas.
itemState Indéfini; n’utilisez pas.
hwndItem Gérez la barre d’état.
hDC Gérez le contexte de l’appareil de la barre d’état.
rcItem Coordonnées de la partie fenêtre à dessiner. Les coordonnées sont relatives au coin supérieur gauche de la barre d’état.
itemData Valeur 32 bits définie par l’application spécifiée dans le paramètre lParam du message SB_SETTEXT.

 

Barres d’état en mode simple

Vous placez une barre d’état en « mode simple » en l’envoyant un message SB_SIMPLE. Une barre d’état en mode simple n’affiche qu’une seule partie. Lorsque le texte de la fenêtre est défini, la fenêtre est invalidée, mais elle n’est pas redessinée jusqu’à la WM_PAINTsuivante. L’attente du message réduit le scintillement de l’écran en réduisant le nombre de fois où la fenêtre est redessinée. Une barre d’état en mode simple est utile pour afficher le texte d’aide des éléments de menu pendant que l’utilisateur fait défiler le menu.

Chaîne affichée par une barre d’état en mode simple séparément des chaînes qu’elle affiche en mode non simple. Cela signifie que vous pouvez placer la fenêtre en mode simple, définir son texte et revenir en mode non simple sans modifier le texte en mode non simple.

Lorsque vous définissez le texte d’une barre d’état en mode simple, vous pouvez spécifier n’importe quelle technique de dessin, sauf SBT_OWNERDRAW. Une barre d’état en mode simple ne prend pas en charge le dessin du propriétaire.

Traitement des messages par défaut de la barre d’état

Cette section décrit les messages gérés par la procédure de fenêtre pour la classe STATUSCLASSNAME prédéfinie.

Message Traitement par défaut
WM_CREATE Initialise la barre d’état.
WM_DESTROY Libère les ressources allouées pour la barre d’état.
WM_GETFONT Retourne le handle à la police actuelle avec laquelle la barre d’état dessine son texte.
WM_GETTEXT Copie le texte de la première partie d’une barre d’état vers une mémoire tampon. Elle retourne une valeur 32 bits qui spécifie la longueur, en caractères, du texte et la technique utilisée pour dessiner le texte.
WM_GETTEXTLENGTH Retourne une valeur 32 bits qui spécifie la longueur, en caractères, du texte dans la première partie d’une barre d’état et la technique utilisée pour dessiner le texte.
WM_NCHITTEST Renvoie la valeur HTBOTTOMRIGHT si le curseur de la souris se trouve dans la poignée de dimensionnement, ce qui entraîne l’affichage du curseur de dimensionnement par le système. Si le curseur de la souris n’est pas dans la poignée de dimensionnement, la barre d’état transmet ce message à la fonction DefWindowProc.
WM_PAINT Peint la région non valide de la barre d’état. Si le paramètre wParam n’est pasNULL, le contrôle suppose que la valeur est un HDC et peint à l’aide de ce contexte d’appareil.
WM_SETFONT Sélectionne le handle de police dans le contexte de l’appareil pour la barre d’état.
WM_SETTEXT Copie le texte spécifié dans la première partie d’une barre d’état, à l’aide de l’opération de dessin par défaut (spécifiée comme zéro). Elle retourne TRUE si elle réussit, ou FALSE sinon.
WM_SIZE Redimensionne la barre d’état en fonction de la largeur actuelle de la zone cliente de la fenêtre parente et de la hauteur de la police actuelle de la barre d’état.