Partager via


Mise à jour du texte d'un volet de barre d'état

Cet article explique comment modifier le texte qui apparaît dans un volet de barre d’état MFC. Une barre d’état ( objet window de la classe CStatusBar ) contient plusieurs « volets ». Chaque volet est une zone rectangulaire de la barre d’état que vous pouvez utiliser pour afficher des informations. Par exemple, de nombreuses applications affichent l’état du verrou CAPS, DU VERROU NUM et d’autres clés dans les volets les plus à droite. Les applications affichent également souvent du texte informatif dans le volet le plus à gauche (volet 0), parfois appelé « volet message ». Par exemple, la barre d’état MFC par défaut utilise le volet de messages pour afficher une chaîne expliquant l’élément de menu ou le bouton de barre d’outils actuellement sélectionné. La figure des barres d’état montre une barre d’état d’une application MFC créée par l’Assistant Application.

Par défaut, MFC n’active pas un CStatusBar volet lorsqu’il crée le volet. Pour activer un volet, vous devez utiliser la macro ON_UPDATE_COMMAND_UI pour chaque volet de la barre d’état et mettre à jour les volets. Étant donné que les volets n’envoient pas de messages WM_COMMAND (ils ne sont pas comme des boutons de barre d’outils), vous devez taper le code manuellement.

Par exemple, supposons qu’un volet possède ID_INDICATOR_PAGE comme identificateur de commande et qu’il contient le numéro de page actif dans un document. La procédure suivante décrit comment créer un volet dans la barre d’état.

Pour créer un nouveau volet

  1. Définissez l’ID de commande du volet.

    Dans le menu Affichage , cliquez sur Affichage des ressources. Cliquez avec le bouton droit sur la ressource de projet, puis cliquez sur Symboles de ressource. Dans la boîte de dialogue Symboles de ressource, cliquez sur New. Tapez un nom d’ID de commande : par exemple. ID_INDICATOR_PAGE Spécifiez une valeur pour l’ID ou acceptez la valeur suggérée par la boîte de dialogue Symboles de ressource. Par exemple, pour ID_INDICATOR_PAGE, acceptez la valeur par défaut. Fermez la boîte de dialogue Symboles de ressource.

  2. Définissez une chaîne par défaut à afficher dans le volet.

    Une fois l’affichage des ressources ouvert, double-cliquez sur Table de chaînes dans la fenêtre qui répertorie les types de ressources pour votre application. Avec l’éditeur de table de chaînes ouvert, choisissez Nouvelle chaîne dans le menu Insertion. Sélectionnez l’ID de commande de votre volet (par exemple) ID_INDICATOR_PAGEet tapez une valeur de chaîne par défaut, telle que « Page ». Fermez l’éditeur de chaîne. (Vous avez besoin d’une chaîne par défaut pour éviter une erreur du compilateur.)

  3. Ajoutez le volet au tableau d’indicateurs.

    Dans le fichier MAINFRM. CPP, recherchez le tableau d’indicateurs. Ce tableau répertorie les ID de commande pour tous les indicateurs de la barre d’état, dans l’ordre de gauche à droite. À l’emplacement approprié dans le tableau, entrez l’ID de commande de votre volet, comme indiqué ici pour ID_INDICATOR_PAGE:

    static UINT indicators[] =
    {
       ID_SEPARATOR,           // status line indicator
       ID_INDICATOR_CAPS,
       ID_INDICATOR_NUM,
       ID_INDICATOR_SCRL,
       ID_INDICATOR_PAGE,
    };
    

La méthode recommandée pour afficher du texte dans un volet consiste à appeler la SetText fonction membre de classe CCmdUI dans une fonction de gestionnaire de mise à jour pour le volet. Par exemple, vous pouvez configurer une variable entière m_nPage qui contient le numéro de page actuel et utiliser SetText pour définir le texte du volet sur une version de chaîne de ce nombre.

Remarque

L’approche SetText est recommandée. Il est possible d’effectuer cette tâche à un niveau légèrement inférieur en appelant la CStatusBar fonction SetPaneTextmembre. Même si, vous avez toujours besoin d’un gestionnaire de mises à jour. Sans ce gestionnaire pour le volet, MFC désactive automatiquement le volet, ce qui efface son contenu.

La procédure suivante montre comment utiliser une fonction de gestionnaire de mises à jour pour afficher du texte dans un volet.

Pour afficher le texte d’un volet

  1. Ajoutez un gestionnaire de mises à jour de commandes pour la commande.

    Ajoutez manuellement un prototype pour le gestionnaire, comme illustré ici ID_INDICATOR_PAGE (dans MAINFRM). H):

    afx_msg void OnUpdatePage(CCmdUI* pCmdUI);
    
  2. Dans le cas approprié . Fichier CPP, ajoutez la définition du gestionnaire, comme indiqué ici ID_INDICATOR_PAGE (dans MAINFRM). CPP) :

    void CMainFrame::OnUpdatePage(CCmdUI* pCmdUI)
    {
       pCmdUI->Enable();
       CString strPage;
       strPage.Format(_T("Page %d"), m_nPage);
       pCmdUI->SetText(strPage);
    }
    

    Les trois dernières lignes de ce gestionnaire sont le code qui affiche votre texte.

  3. Dans la carte de messages appropriée, ajoutez la macro ON_UPDATE_COMMAND_UI, comme indiqué ici ID_INDICATOR_PAGE (dans MAINFRM. CPP) :

    ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
    

Une fois que vous avez défini la valeur de la variable membre m_nPage (de classe CMainFrame), cette technique entraîne l’affichage du numéro de page dans le volet pendant le traitement inactif de la même façon que l’application met à jour d’autres indicateurs. Si m_nPage modifications, l’affichage change pendant la prochaine boucle inactive.

Que voulez-vous en savoir plus sur

Voir aussi

Implémentation de la barre d’état dans MFC
CStatusBar, classe