Partager via


L'ancrage et barres d'outils flottante

Les barres d'outils ancrables provenant de la bibliothèque MFC.Une barre d'outils ancrable, ou ancré, à tout côté de sa fenêtre parente, ou à elle peut être détaché, ou flotter, dans une fenêtre mini-frame.Cet article explique comment utiliser les barres d'outils ancrables dans vos applications.

Si vous utilisez l'Assistant Application pour générer la structure de votre application, vous êtes pour déterminer si vous souhaitez les barres d'outils ancrables.Par défaut, l'Assistant Application génère du code qui exécute les trois actions nécessaires pour placer une barre d'outils ancrable dans votre application :

  • activez l'ancrage dans une fenêtre frame.

  • Activez l'ancrage d'une barre d'outils.

  • Ancrez la barre d'outils (à la fenêtre frame).

Si l'un de ces étapes sont absentes, votre application affiche une barre d'outils standard.Les deux dernières étapes doivent être réalisées pour chacune des barres d'outils ancrables de votre application.

D'autres rubriques abordées dans cet article incluent :

  • Flottante de la barre d'outils

  • Redimensionner dynamiquement la barre d'outils

  • Définir des positions d'enveloppe pour une barre d'outils de style résolu

Voir à MFC l'exemple général DOCKTOOL pour obtenir des exemples.

Activer l'ancrage dans une fenêtre frame

Pour ancrer des barres d'outils à une fenêtre frame, la fenêtre frame (ou la destination) doit être activée pour permettre à l'ancrage.Cette opération est effectuée à l'aide de la fonction de CFrameWnd::EnableDocking , qui prend un paramètre d' DWORD qui est un ensemble d'indiquer de bits de style quel côté de la fenêtre frame qui accepte l'ancrage.Si une barre d'outils est sur le point d'être ancrée et il y a plusieurs côtés qu'il peut être ancré à, les côtés désignés dans le paramètre passé à EnableDocking sont utilisés dans l'ordre suivant : supérieur, inférieur, gauche, droite.Si vous voulez ancrer des barres de contrôles n'importe où, passez CBRS_ALIGN_ANY à EnableDocking.

Activer l'ancrage d'une barre d'outils

Après avoir préparé la destination pour ancrer, vous devez préparer la barre d'outils (ou la source) de la même façon.Appel CControlBar::EnableDocking pour chaque barre d'outils à ancrer, en spécifiant les côtés de destination auxquels la barre d'outils doit s'ancrer.Si aucun des côtés spécifiés dans l'appel à la correspondance d' CControlBar::EnableDocking les côtés activés pour ancrer dans la fenêtre frame, la barre d'outils ne peut l'ancrer — il flotte.Dès qu'elle flotte, elle reste alors une barre d'outils flottante, incapable de s'ancrer à la fenêtre frame.

Si l'effet escompté est une barre d'outils définitivement de flottante, appelez EnableDocking avec le paramètre 0.Appelez ensuite CFrameWnd::FloatControlBar.La barre d'outils reste flottante, définitivement impossible de ancrer n'importe quel emplacement.

L'ancrage de la barre d'outils

L'infrastructure appelle CFrameWnd::DockControlBar lorsque l'utilisateur tente de supprimer la barre d'outils d'un côté de la fenêtre frame qui permet l'ancrage.

En outre, vous pouvez appeler cette fonction à tout moment pour ancrer des barres de contrôles à la fenêtre frame.Cela est normalement effectue pendant l'initialisation.Plusieurs barre d'outils peut être ancrée à un côté particulier de la fenêtre frame.

Flottante de la barre d'outils

Pour arrêter une barre d'outils ancrable de la fenêtre frame est appelé flottante de la barre d'outils.Appel CFrameWnd::FloatControlBar pour ce faire.Spécifiez la barre d'outils à flotter, le point où elle doit être placée, et un style d'alignement qui détermine si la barre d'outils flottante est horizontale ou verticale.

L'infrastructure appelle cette fonction lorsqu'un utilisateur fait glisser la barre d'outils en dehors de son emplacement d'ancrage et la supprime dans un emplacement où ancrer n'est pas activé.Cela peut être n'importe où à l'intérieur ou à l'extérieur de la fenêtre frame.Comme avec DockControlBar, vous pouvez également appeler cette fonction pendant l'initialisation.

L'implémentation MFC des barres d'outils ancrables ne fournit pas certaines fonctionnalités étendues disponibles dans certaines applications qui prennent en charge les barres d'outils ancrables.Des fonctionnalités telles que les barres d'outils personnalisables ne sont pas fournies.

Redimensionner dynamiquement la barre d'outils

À partir de la version 4,0 de Visual C++, vous pouvez rendre possible pour les utilisateurs de votre application pour redimensionner les barres d'outils flottante dynamiquement.En général, une barre d'outils contient une longue, linéaire forme, affiché horizontalement.Mais vous pouvez modifier sa forme de la barre d'outils de l'orientation et.Par exemple, lorsque l'utilisateur ancre une barre d'outils avec un des côtés verticaux de la fenêtre frame, la forme modifications d'une disposition verticale.Il est également possible de reformer la barre d'outils dans un rectangle avec plusieurs lignes de boutons.

Vous pouvez effectuer l'une des actions suivantes :

  • Spécifiez le redimensionnement dynamique comme caractéristique de barre d'outils.

  • Spécifiez a résolu le dimensionnement comme caractéristique de barre d'outils.

Pour fournir cette prise en charge, il existe deux styles de nouvelle barre d'outils destiné à vos appels à la fonction membre de CToolBar::Create .Il s'agit des éléments suivants :

  • La barre de contrôles deCBRS_SIZE_DYNAMICest dynamique.

  • La barre de contrôles deCBRS_SIZE_FIXEDest résolue.

Le style dynamique de taille permet à l'utilisateur de redimensionner la barre d'outils alors qu'il est flottant, mais pas lors qu'il est ancré.La barre d'outils « encapsule » quand c'est nécessaire pour se déformer lorsque l'utilisateur fait glisser ses bords.

Le style résolu par taille conserve les rapports d'enveloppe d'une barre d'outils, la résolution la position des boutons dans chaque colonne.l'utilisateur de votre application ne peut pas modifier la forme de la barre d'outils.Elle se poursuit de barre d'outils à des emplacements indiqués, comme les emplacements des séparateurs entre les boutons.Elle stocke cette forme si la barre d'outils est ancrée ou flottante.L'effet est une palette fixe avec plusieurs colonnes de boutons.

Vous pouvez également utiliser CToolBar::GetButtonStyle pour retourner un rapport et un style des boutons sur les barres d'outils.Le style d'un bouton détermine comment le bouton apparaît et comment il répond à l'entrée d'utilisateur ; le rapport indique si le bouton est dans un état encapsulé.

Définir des positions d'enveloppe pour une barre d'outils De Style résolu

Pour une barre d'outils avec le style résolu par taille, les index appelés des boutons de barre d'outils auxquels la barre d'outils s'passe.Le code suivant montre comment effectuer cette opération dans la substitution d' OnCreate de votre fenêtre frame principale :

// Get the style of the first button separator
UINT nStyle = m_wndToolBar.GetButtonStyle(3);
// Augment the state for wrapping
nStyle |= TBBS_WRAPPED;
m_wndToolBar.SetButtonStyle(3, nStyle);

// Do the same for other wrap locations ...

// Set the bar style to size fixed
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
   CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);

// Call docking/floating functions as needed ...

L'exemple général DOCKTOOL MFC montre comment utiliser les fonctions membres des classes CControlBar et CToolBar pour gérer la disposition dynamique d'une barre d'outils.Consultez le fichier EDITBAR.CPP dans DOCKTOOL.

a7022c58.collapse_all(fr-fr,VS.110).gifSur quels éléments souhaitez-vous obtenir des informations supplémentaires ?

Voir aussi

Concepts

Implémentation de barre d'outils MFC