Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La bibliothèque Microsoft Foundation Class prend en charge les barres d'outils ancrables. Une barre d'outils ancrable peut être attachée ou ancrée à n'importe quel côté de sa fenêtre parent, ou elle peut être détachée ou flottante dans sa propre mini-fenêtre. Cet article explique comment utiliser des barres d’outils ancrables dans vos applications.
Si vous utilisez l’Assistant Application pour générer le squelette de votre application, vous êtes invité à choisir si vous souhaitez des barres d’outils ancrables. Par défaut, l’Assistant Application génère le code qui effectue les trois actions nécessaires pour placer une barre d’outils ancrable dans votre application :
Si l’une de ces étapes est manquante, votre application affiche une barre d’outils standard. Les deux dernières étapes doivent être effectuées pour chaque barre d’outils ancrable dans votre application.
Les autres rubriques abordées dans cet article sont les suivantes :
Consultez l’exemple MFC General DOCKTOOL pour obtenir des exemples.
Activer l’ancrage dans une fenêtre frame
Pour ancrer des barres d’outils dans une fenêtre frame, la fenêtre frame (ou destination) doit être activée pour autoriser l’ancrage. Cette opération est effectuée à l’aide de la fonction CFrameWnd ::EnableDocking , qui prend un paramètre DWORD qui est un ensemble de bits de style indiquant quel côté de la fenêtre frame accepte l’ancrage. Si une barre d’outils est sur le point d’être ancrée et qu’il existe plusieurs côtés auxquels elle peut être ancrée, les côtés indiqués dans le paramètre transmis EnableDocking
sont utilisés dans l’ordre suivant : haut, bas, gauche, droite. Si vous souhaitez pouvoir ancrer des barres de contrôle n’importe où, passez CBRS_ALIGN_ANY à EnableDocking
.
Activation de la fonctionnalité d'ancrage pour une barre d'outils
Une fois que vous avez préparé la destination pour l’ancrage, vous devez préparer la barre d’outils (ou source) de la même manière. Appelez CControlBar ::EnableDocking pour chaque barre d’outils que vous souhaitez 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 à CControlBar::EnableDocking
ne correspond aux côtés activés pour l'ancrage dans la fenêtre frame, la barre d'outils ne peut pas être ancrée, elle flottera. Une fois qu’elle a été transformée en flottante, elle reste une barre d’outils flottante, incapable de s’ancrer dans la fenêtre de cadre.
Si l’effet souhaité est une barre d’outils flottante permanente, appelez EnableDocking
avec un paramètre de 0. Appelez ensuite CFrameWnd ::FloatControlBar. La barre d’outils reste flottante et ne peut pas s’ancrer en permanence n’importe où.
Ancrer la barre d’outils
L’infrastructure appelle CFrameWnd::DockControlBar lorsque l’utilisateur tente de déplacer la barre d’outils d’un côté de la fenêtre de cadre qui autorise l’ancrage.
En outre, vous pouvez appeler cette fonction à tout moment pour ancrer des barres de contrôle dans la fenêtre frame. Cela est normalement effectué lors de l’initialisation. Plusieurs barres d’outils peuvent être ancrées à un côté spécifique de la fenêtre de cadre.
Faire flotter la barre d’outils
Le fait de détacher une barre d'outils ancrable de la fenêtre frame s'appelle faire flotter la barre d’outils. Appelez 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.
Le framework appelle cette fonction lorsqu’un utilisateur fait glisser une barre d’outils hors de son emplacement ancré et la dépose dans un endroit où l’ancrage n’est pas activé. Cela peut être n’importe où à l’intérieur ou à l’extérieur de la fenêtre cadre. 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 des fonctionnalités étendues présentes dans certaines applications qui supportent les barres d’outils ancrables. Les fonctionnalités telles que les barres d’outils personnalisables ne sont pas fournies.
Redimensionnement dynamique de la barre d’outils
À partir de Visual C++ version 4.0, vous pouvez permettre aux utilisateurs de votre application de redimensionner dynamiquement les barres d’outils flottantes. En règle générale, une barre d’outils a une forme longue, linéaire, affichée horizontalement. Mais vous pouvez modifier l’orientation de la barre d’outils et sa forme. Par exemple, lorsque l’utilisateur ancre une barre d’outils sur l’un des côtés verticaux de la fenêtre de cadre, la forme passe à une disposition verticale. Il est également possible de remodeler la barre d’outils en rectangle avec plusieurs lignes de boutons.
Vous pouvez:
Spécifiez le dimensionnement dynamique comme caractéristique de barre d’outils.
Spécifiez le dimensionnement fixe comme caractéristique de barre d’outils.
Pour fournir cette prise en charge, il existe deux nouveaux styles de barre d’outils à utiliser dans vos appels à la fonction membre CToolBar::Create. Elles sont les suivantes :
CBRS_SIZE_DYNAMIC La barre de contrôle est dynamique.
CBRS_SIZE_FIXED La barre de contrôle est fixe.
Le style dynamique de taille permet à votre utilisateur de redimensionner la barre d’outils pendant qu’elle flotte, mais pas pendant son ancrage. La barre d'outils s'adapte si nécessaire pour changer de forme lorsque l'utilisateur fait glisser ses bords.
Le style à taille fixe conserve les états d'enroulement d’une barre d’outils, fixant la position des boutons dans chaque colonne. L’utilisateur de votre application ne peut pas modifier la forme de la barre d’outils. La barre d’outils s’encapsule à des emplacements désignés, tels que les emplacements des séparateurs entre les boutons. Elle conserve 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 état et un style pour les boutons de vos barres d’outils. Le style d’un bouton détermine la façon dont le bouton s’affiche et comment il répond à l’entrée utilisateur ; l’état indique si le bouton est dans un état encapsulé.
Définir des positions pour une barre d’outils de style fixe
Pour une barre d'outils avec un style de taille fixe, désignez les index des boutons où la barre d’outils doit revenir à la ligne. Le code suivant vous montre comment procéder dans la méthode 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 MFC General DOCKTOOL 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.