Mettre à jour le texte d'un volet de barre d'état
Cet article explique comment modifier le texte qui s'affiche dans un volet de barre d'état MFC.Une barre d'état — un objet window de classe CStatusBar — contient plusieurs « volets. » Chaque volet est une zone rectangulaire de la barre d'état que vous pouvez utiliser pour afficher les informations.Par exemple, de nombreuses applications affichent l'état de la TOUCHE VERR, de NUM, et d'autres clés dans les volets de droite.Les applications restituent également souvent le texte informatif dans le volet à l'extrême gauche (volet 0), parfois appelé « volet de message ». Par exemple, la barre d'état des MFC utilise par défaut le volet de message pour afficher une chaîne qui expliquent l'élément de menu ou sur le bouton de barre d'outils actuellement sélectionné.L'illustration dans barres d'état affiche une barre d'état d'une application MFC Assistant-créée par application.
Par défaut, MFC n'active pas un volet d' CStatusBar lorsqu'il crée le volet.Pour activer un volet, vous devez utiliser la macro d' ON_UPDATE_COMMAND_UI pour chaque volet dans la barre d'état et mettre à jour les volets.Étant donné que les volets n'envoient pas de messages de WM_COMMAND (ils ne sont pas comme des boutons de barre d'outils), vous devez entrer manuellement le code.
Par exemple, supposons qu'un volet a ID_INDICATOR_PAGE comme identificateur de commande et qu'elle contient le numéro de page actuelle dans un document.La procédure suivante décrit comment créer un nouveau volet dans la barre d'état.
Pour qu'un nouveau volet
Définissez l'ID de commande du volet
Dans le menu de Afficher , cliquez sur Affichage des ressources.Cliquez avec le bouton droit sur la ressource du projet et cliquez sur Symboles des ressources.Dans la boîte de dialogue symboles des ressources, 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 des ressources.Par exemple, pour ID_INDICATOR_PAGE, acceptez la valeur par défaut.Fermez la boîte de dialogue symboles des ressources.
Définissez une chaîne par défaut à afficher dans le volet.
Avec 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, cliquez New String dans le menu de Insérer .Dans la fenêtre de propriétés de type chaîne, sélectionnez l'ID de commande de votre volet (par exemple, ID_INDICATOR_PAGE) et tapez une valeur de chaîne par défaut, telle que « page ».Fermez l'éditeur de chaînes.(Vous avez besoin d'une chaîne par défaut pour éviter une erreur du compilateur.)
Ajoutez le volet au tableau d' indicators .
Dans le fichier MAINFRM.CPP, recherchez la matrice d' indicators .Identificateurs de cette commande de listes de tables pour tous les indicateurs de barre d'état, de gauche à droite.Au moment approprié du 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 est d'appeler la fonction membre de SetText de la classe CCmdUI dans une fonction du gestionnaire de mise à jour du volet.Par exemple, vous pouvez configurer une variable de type entier m_nPage qui contient le nombre et l'utilisation SetText de page actuelle de définir le texte du volet à une version de chaîne de ce nombre.
[!REMARQUE]
l'approche de SetText est recommandée.Il est possible d'effectuer cette tâche légèrement à un plus simple en appelant la fonction membre SetPaneTextd' CStatusBar .Néanmoins, vous avez toujours besoin d'un gestionnaire de mise à jour.Sans ce gestionnaire pour le volet, MFC efface automatiquement le volet, effaçant son contenu.
La procédure suivante montre comment utiliser une fonction du gestionnaire de mise à jour du texte dans un volet.
Pour qu'un texte affiché de volet
Ajoutez un gestionnaire de mise à jour de commande.
Ajoutez manuellement un prototype pour le gestionnaire, comme indiqué ici pour ID_INDICATOR_PAGE (dans MAINFRM.H) :
afx_msg void OnUpdatePage(CCmdUI *pCmdUI);
Dans le fichier .cpp approprié, ajoutez la définition du gestionnaire, comme indiqué ici pour 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 code qui affiche un texte.
Dans la table des messages appropriée, ajoutez la macro d' ON_UPDATE_COMMAND_UI , comme indiqué ici pour ID_INDICATOR_PAGE (dans MAINFRM.CPP) :
ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
Une fois que vous définissez la valeur de la variable membre d' m_nPage (classe CMainFrame), les causes de cette technique le numéro de page à s'affichent dans le volet pendant le traitement des temps d'inactivité de la même façon que l'application met à jour des autres indicateurs.Si m_nPage change, l'affichage change pendant la boucle inactive suivante.