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.
Ce document décrit les éléments d’interface qui ont été introduits dans Visual Studio 2008 SP1 et décrit également les différences avec la version antérieure de la bibliothèque.
L’illustration suivante montre une application créée à l’aide des nouveaux éléments d’interface.
Ancrage de fenêtre
La fonctionnalité d’ancrage de fenêtre ressemble à celle utilisée par l’interface utilisateur graphique visual Studio.
Les barres de contrôle sont désormais des volets
Les barres de contrôle sont désormais appelées volets et sont dérivées de la classe CBasePane. Dans les versions antérieures de MFC, la classe de base des barres de contrôle était CControlBar
.
La fenêtre d’image principale de l’application est généralement représentée par la classe CFrameWndEx ou la classe CMDIFrameWndEx. Le cadre principal est appelé site d’ancrage. Les volets peuvent avoir l’un des trois types de parents : un site d’ancrage, une barre d’ancrage ou une fenêtre mini-frame.
Il existe deux types de volets : non redimensionnable et redimensionnable. Les volets redimensionnables, tels que les barres d’état et les barres d’outils, peuvent être redimensionnés à l’aide de séparateurs ou de curseurs. Les volets redimensionnables peuvent former des conteneurs (un volet peut être ancré dans un autre volet, créant un séparateur entre eux). Toutefois, les volets redimensionnables ne peuvent pas être attachés (ancrés) aux barres d’ancrage.
Si votre application utilise des volets non redimensionnables, dérivez-les de la classe CPane. Si votre application utilise des volets redimensionnables, dérivez-les de la classe CDockablePane
Site d’ancrage
Le site d’ancrage (ou fenêtre de cadre principal) possède tous les volets et fenêtres mini-frame dans une application. Le site d’ancrage contient un membre CDockingManager . Ce membre gère une liste de tous les volets qui appartiennent au site d’ancrage. La liste est triée afin que les volets créés aux bords externes du site d’ancrage soient positionnés au début de la liste. Lorsque l’infrastructure redessine le site d’ancrage, elle effectue une boucle sur cette liste et ajuste la disposition de chaque volet pour inclure le rectangle englobant actuel du site d’ancrage. Vous pouvez appeler AdjustDockingLayout
ou RecalcLayout
quand vous devez ajuster la disposition d’ancrage, et l’infrastructure redirige cet appel vers le gestionnaire d’ancrage.
Barres d’ancrage
Chaque fenêtre de cadre principale peut positionner les barres d’ancrage le long de ses bordures. Une barre d’ancrage est un volet qui appartient à une classe CDockSite. Les barres d’ancrage peuvent accepter des objets dérivés de CPane, tels que des barres d’outils. Pour créer des barres d’ancrage lorsque la fenêtre de trame principale est initialisée, appelez EnableDocking
. Pour activer les barres de masquage automatique, appelez EnableAutoHideBars
.
EnableAutoHideBars
crée des objets CAutoHideDockSite et les positionne en regard de chaque barre d’ancrage.
Chaque barre d’ancrage est divisée en lignes d’ancrage. Les lignes d’ancrage sont représentées par la classe CDockingPanesRow. Chaque ligne d’ancrage contient une liste de barres d’outils. Si un utilisateur ancre une barre d’outils ou déplace la barre d’outils d’une ligne vers une autre dans la même barre d’ancrage, l’infrastructure crée une nouvelle ligne et redimensionne la barre d’ancrage en conséquence, ou positionne la barre d’outils sur une ligne existante.
Fenêtres mini-frame
Un volet flottant se trouve dans une fenêtre mini-frame. Les fenêtres mini-frame sont représentées par deux classes : la classe CMDITabInfo (qui ne peut contenir qu’un seul volet) et la classe CMultiPaneFrameWnd (qui peut contenir plusieurs volets). Pour flotter un volet dans votre code, appelez CBasePane ::FloatPane. Une fois qu’un volet flotte, l’infrastructure crée automatiquement une fenêtre mini-frame et cette fenêtre mini-frame devient le parent du volet flottant. Lorsque le volet flottant est ancré, l’infrastructure réinitialise son parent et le volet flottant devient une barre d’ancrage (pour les barres d’outils) ou un site d’ancrage (pour les volets redimensionnables).
Séparateurs de volets
Les séparateurs de volet (également nommés curseurs ou séparateurs) sont représentés par la classe CPaneDivider. Lorsqu’un utilisateur ancre un volet, l’infrastructure crée des séparateurs de volet, que le volet soit ancré sur le site d’ancrage ou dans un autre volet. Lorsqu’un volet est ancré au site d’ancrage, le diviseur de volet est appelé séparateur de volet par défaut. Le diviseur de volet par défaut est responsable de la disposition de tous les volets d’ancrage du site d’ancrage. Le gestionnaire d’ancrage gère une liste de séparateurs de volets par défaut et une liste de volets. Les gestionnaires d’ancrage sont responsables de la disposition de tous les volets d’ancrage.
Conteneurs
Tous les volets redimensionnables, lorsqu’ils sont ancrés les uns aux autres, sont conservés dans des conteneurs. Les conteneurs sont représentés par la classe CPaneContainer. Chaque conteneur a des pointeurs vers son volet gauche, le volet droit, le sous-conteneur gauche, le sous-conteneur droit et le fractionnement entre les parties gauche et droite. (Gauche et droite ne font pas référence aux côtés physiques, mais identifient plutôt les branches d’une structure d’arborescence.) De cette façon, nous pouvons créer une arborescence de volets et de fractionnements, et ainsi obtenir des dispositions complexes de volets qui peuvent être redimensionnées ensemble. La CPaneContainer
classe gère l’arborescence des conteneurs ; elle gère également deux listes de volets et de curseurs qui résident dans cette arborescence. Les gestionnaires de conteneurs de volets sont généralement incorporés dans des curseurs par défaut et des fenêtres mini-frame qui comportent plusieurs volets.
Masquer automatiquement les barres de contrôle
Par défaut, chacun CDockablePane
prend en charge la fonctionnalité de masquage automatique. Lorsqu’un utilisateur clique sur le bouton Épingler sur la légende du CDockablePane
, le framework bascule le volet en mode masquer automatiquement. Pour gérer le clic, l’infrastructure crée une classe CMFCAutoHideBar et une classe CMFCAutoHideButton associée à l’objet CMFCAutoHideBar
. L’infrastructure met le nouveau CMFCAutoHideBar
sur CAutoHideDockSite. L’infrastructure attache également la CMFCAutoHideButton
barre d’outils. La classe CDockingManager gère le CDockablePane
.
Barres de contrôle à onglets et barres Outlook
La classe CMFCBaseTabCtrl implémente la fonctionnalité de base d’une fenêtre à onglets avec des onglets détachables. Pour utiliser un CMFCBaseTabCtrl
objet, initialisez une classe CBaseTabbedPane dans votre application.
CBaseTabbedPane
est dérivé CDockablePane
et conserve un pointeur vers un CMFCBaseTabCtrl
objet. Permet CBaseTabbedPane
aux utilisateurs d’ancrer et de redimensionner des barres de contrôle à onglets. Utilisez CDockablePane ::AttachToTabWnd pour créer dynamiquement des barres de contrôle ancrées et tabulations.
Le contrôle de barre Outlook est également basé sur des barres à onglets. La classe CMFCOutlookBar est dérivée de CBaseTabbedPane
. Pour plus d’informations sur l’utilisation de la barre Outlook, consultez CMFCOutlookBar, classe.