Cette note décrit les classes de barres de contrôle dans MFC : le général CControlBar, CStatusBar CToolBar, CDialogBaret CDockBar.
Un ControlBar est un CWnd-dérivée de la classe qui:
Les barres de contrôle en charge les styles supplémentaires:
Les classes dérivées de CControlBar fournissent des implémentations plus intéressantes:
Barre de contrôle tous les objets/windows seront les fenêtres enfants de certaines fenêtre frame de parent. Ils sont généralement ajoutés comme une soeur à la zone client de la trame (par exemple, un Client MDI ou vue). L'ID de fenêtre enfant d'une barre de contrôle est important. La disposition par défaut de la barre de contrôle ne fonctionne que pour les barres de contrôle avec l'ID dans la plage AFX_IDW_CONTROLBAR_FIRST à AFX_IDW_CONTROLBAR_LAST. Notez que, même s'il existe une gamme de contrôle 256 barre IDs, les 32 premiers de ces barres de contrôle ID sont spéciaux car ils sont directement pris en charge par l'architecture de l'aperçu avant impression.
La classe CControlBar donne une implémentation standard pour
Les objets C++ de barre de contrôle seront habituellement incorporés comme membres de la classe CFrameWnd classe dérivée et seront nettoyés lorsque le parent HWND et l'objet sont détruites. Si vous avez besoin d'allouer un objet barre de contrôle sur le tas, vous pouvez simplement définir le membre m_bAutoDestruct à TRUE pour rendre le contrôle barre "supprimer ce" lorsque le HWND est détruit.
&Nbsp important; Si vous créez votre propre CControlBar-classe dérivée, plutôt qu'à l'aide de MFC dérivées des classes, telles que CStatusBar, CToolBarou CDialogBar, vous devrez définir le membre de données m_dwStyle . Cela peut être fait de la substitution de Create:
/ / CMyControlBar est dérivé de CControlBar
BOOL CMyControlBar::Create (pParentWnd CWnd *, DWORD dwStyle, UI&NT nID)
{
nbsp ; m_dwStyle = dwStyle ;
.
.
.
}
Algorithme de disposition de barre de contrôle
L'algorithme de disposition de barre contrôle est très simple. La fenêtre frame envoie un message WM_SIZEPARENT à tous les enfants dans l'intervalle de barre de contrôle. Avec ce message, un pointeur vers le rectangle de client du parent est passé. Ce message est envoyé aux enfants dans l'ordre Z. Les enfants de la barre de contrôle utilisent cette information pour se positionner et de diminuer la taille de la zone client du parent. Rectangle final qui est à gauche de la zone client normal (moins barres de contrôle) est utilisé pour positionner la fenêtre client principal (habituellement un client, d'avis ou de séparateur de fenêtre MDI).
Pour plus de détails, voir CWnd::RepositionBars et CFrameWnd::RecalcLayout.
MFC Windows messages privés, y compris les WM_SIZEPARENT, sont documentés dans Technical Note 24.
Une barre d'État est une barre de contrôle qui possède une rangée de vitres de sortie de texte. Il existe deux manières courantes d'utiliser des volets de sortie de texte:
(par exemple, le menu standard aide ligne de message). Ces sont généralement accessibles par un 0-base indexée
(par exemple, les CAP, NUM et SCRL indicateurs). Ceux-ci sont habituellement accessibles par ID de chaîne/commande.
La police de la barre d'État est de 10 points "MS Sans Serif" (dictées par le Guide de conception de l'Application Interface Windows ou le meilleur match de police mappeurs d'une police proportionnelle suisse de 10 points). Sur certaines versions de Windows, telles que l'édition japonaise et Windows 4.0, les polices sélectionnées sont différents.
Les couleurs utilisées dans la barre d'État sont également compatibles avec les recommandations du Guide de conception Windows Interface Application. Ces couleurs ne sont pas préprogrammés et changent dynamiquement en réponse à la personnalisation de l'utilisateur via le panneau de contrôle.
| Élément | Valeur de couleur Windows | Par défaut, RVB |
| Fond de barre de statut | COLOR_BTNFACE | RGB (192, 192, 192) |
| Texte de la barre statut | COLOR_BTNTEXT | RGB (000, 000, 000) |
| Les bords haut et gauche la barre d'État | COLOR_BTNHIGHLIGHT | RGB (255, 255, 255) |
| Bords droit bot la barre d'État | COLOR_BTNSHADOW | RGB (128, 128, 128) |
CCmdUI Support pour CStatusBar
Le mécanisme ON_UPDATE_COMMAND_UI est le moyen des indicateurs sont généralement mis à jour. Le temps d'inactivité, la barre d'État appelle le gestionnaire d'événements ON_UPDATE_COMMAND_UI avec l'ID de la chaîne du volet indicateur.
Le gestionnaire d'événements ON_UPDATE_COMMAND_UI peut appeler:
Veuillez vous référer à la classe CStatusBar dans Class Library Reference pour plus de détails sur la création CStatusBar et personnalisation API. La plupart de personnalisation des barres d'État devrait faire avant que la barre d'État est initialement rendue visible.
La barre d'État prend en charge qu'un seul volet élastique, généralement le premier volet. La taille de ce volet est vraiment une taille minimale. Si la barre d'État est plus grande que la taille minimale de tous les volets, toute largeur supplémentaire sera accordée au volet élastique. L'application par défaut avec une barre d'État a indicateurs alignés à droite pour la PAC, NUM et SCRL depuis le premier volet est élastique.
Une barre d'outils est une barre de contrôle avec une rangée de boutons bitmap qui peut inclure des séparateurs. Deux styles de boutons sont pris en charge : boutons de commande et les boutons de la case à cocher. Fonctionnalité de groupe de radio peut être construite avec la case à cocher boutons et ON_UPDATE_COMMAND_UI.
Tous les boutons de la bitmap dans la barre d'outils sont prises d'un bitmap. Cette image bitmap doit contenir une image ou un glyphe pour chaque bouton. L'ordre des glyphes et des images de la bitmap est généralement du même ordre qu'ils seront dessinés à l'écran. (Cela peut être modifié à l'aide de l'API de personnalisation.)
Chaque bouton doit être la même taille. La valeur par défaut est standards 24 x 22 pixels. Chaque image/glyphe doit être la même taille et doit être side-by-side dans la bitmap. La taille d'image/glyphe par défaut est 16 x 15 pixels. Donc, pour une barre d'outils avec les 10 boutons (en utilisant des formats standard), vous avez besoin d'une image bitmap qui est 160 pixels de large et 15 pixels de haut.
Chaque bouton a une et une seule image/glyphe. Le bouton différent États et styles (par exemple, pressé, haut, Bas, handicapé, handicapés vers le bas, pour une période indéterminée) sont algorithmiquement généré à partir qu'une seule image/glyphe. DIB ou bitmap couleur peut servir dans la théorie. L'algorithme permettant de générer le bouton différent États travaux mieux si l'image originale est de nuances de gris. Regardez les boutons de la barre d'outils standard et la barre d'outils bouton clipart fourni dans l'exemple général MFC images CLIPART pour des exemples.
Les couleurs utilisées dans la barre d'outils sont également conformes à la recommandation de du Guide de conception de l'Application Interface Windows. Ces couleurs ne sont pas préprogrammés et changent dynamiquement en réponse à la personnalisation de l'utilisateur via le panneau de contrôle.
| Élément | Valeur de couleur Windows | Par défaut, RVB |
| Arrière-plan de la barre d'outils | COLOR_BTNFACE | RGB(192,192,192) |
| Barre d'outils boutons bords haut et gauche | COLOR_BTNHIGHLIGHT | RGB(255,255,255) |
| Barre d'outils boutons bords droit bot | COLOR_BTNSHADOW | RGB(128,128,128) |
En outre, les boutons de la barre d'outils image bitmap sont recolorés comme s'ils étaient des contrôles de bouton Windows standard. Cette recoloration se produit lors du chargement de l'image bitmap de la ressource et en réponse à un changement de couleurs du système en réponse à la personnalisation de l'utilisateur via le panneau de contrôle. Les couleurs suivantes dans un bitmap de la barre d'outils seront automatiquement recolorés donc ils doivent être utilisés avec prudence. Si vous ne souhaitez pas avoir une partie de votre image bitmap recoloré, utilisez une couleur qui se rapproche étroitement de l'une des valeurs RVB mappés. Le mappage est effectué basé sur les valeurs RVB exactes.
| Valeur RVB | Valeur de couleur dynamique mappé |
| RGB (000, 000, 000) | COLOR_BTNTEXT |
| RGB (128, 128, 128) | COLOR_BTNSHADOW |
| RGB (192, 192, 192) | COLOR_BTNFACE |
| RGB (255, 255, 255) | COLOR_BTNHIGHLIGHT |
Veuillez vous référer à la classe CToolBar la Class Library Reference pour plus d'informations sur la création de CToolBar et personnalisation API. La plupart de personnalisation des barres d'outils devrait faire avant que la barre d'outils est initialement rendue visible.
La personnalisation API peut être utilisé pour ajuster le bouton ID, styles, largeur d'espacement et quelle image/glyphe est utilisé pour ce bouton. Par défaut, vous ne pas besoin d'utiliser ces API.
CCmdUI Support de CToolBar
Le mécanisme ON_UPDATE_COMMAND_UI est le moyen des boutons de barre d'outils sont toujours mis à jour. Le temps d'inactivité, la barre d'outils appelle le gestionnaire d'événements ON_UPDATE_COMMAND_UI avec l'ID de commande de ce bouton. ON_UPDATE_COMMAND_UI n'est pas appelée pour les séparateurs, mais elle est appelée pour les boutons de commande et les boutons de la case à cocher.
Le gestionnaire d'événements ON_UPDATE_COMMAND_UI peut appeler:
Case à cocher boutons sont des boutons de case à cocher « AUTO » ; Autrement dit, lorsque l'utilisateur appuie sur eux ils changeront immédiatement État. Vérifié, c'est l'État vers le bas ou déprimé. Il n'y a aucun moyen d'interface utilisateur intégré pour modifier un bouton dans l'État « indéterminée » ; qui doit être fait par le biais de code.
La personnalisation API vous permettra de changer l'état d'un bouton de barre d'outils donnée, de préférence, vous devez modifier ces États dans le gestionnaire d'événements ON_UPDATE_COMMAND_UI pour la commande que représente le bouton de barre d'outils. N'oubliez pas, le traitement au ralenti va changer l'état des boutons de barre d'outils avec le gestionnaire d'événements ON_UPDATE_COMMAND_UI , afin que toute modification apportée à ces États de fait par le biais de SetButtonStyle peut se perdre après la prochaine marche au ralenti.
Boutons de barre d'outils envoie messages WM_COMMAND comme des boutons normaux ou des éléments de menu et sont normalement gérés par un gestionnaire d'événements ON_COMMAND dans la même classe qui fournit le gestionnaire ON_UPDATE_COMMAND_UI.
Il y a quatre styles de bouton des barre d'outils (valeurs TBBS_) utilisés pour les États d'affichage:
Les six styles de bouton de Windows Interface Application Design Guide officiels sont représentés par les valeurs suivantes des TBBS:
Une barre de boîte de dialogue est une barre de contrôle qui contient des contrôles Windows standard. Il agit comme une boîte de dialogue, car elle contient les contrôles et prend en charge la tabulation entre eux. Il agit également comme une boîte de dialogue qu'il utilise un modèle de boîte de dialogue pour représenter la barre.
Un CDialogBar est utilisé pour la barre d'outils Aperçu avant impression, qui contient des contrôles boutons-poussoirs standard.
À l'aide d'un CDialogBar ressemble à l'aide d'une CFormView. Vous devez définir un modèle de boîte de dialogue de la barre de boîte de dialogue et de supprimer tous les styles sauf WS_CHILD. Notez que la boîte de dialogue ne doit pas être visible.
Les notifications de contrôle pour un CDialogBar seront envoyées au parent de la barre de contrôle (tout comme les boutons de la barre d'outils).
CCmdUI Support pour CDialogBar
Boutons de la barre de dialo&gue devrait être mis à jour par le mécanisme de gestionnaire d'événements ON_UPDATE_COMMAND_UI . Au temps d'inactivité, la barre de boîte de dialogue appelle le gestionnaire d'événements ON_UPDATE_COMMAND_UI avec l'ID de commande de tous les boutons qui ont un ID gt; = 0 x 8000 (c'est-à-dire, dans la plage d'ID de commande).
Le gestionnaire d'événements ON_UPDATE_COMMAND_UI peut appeler:
Personnalisation peut se faire via le gestionnaire de fenêtre standard API.
&Notes techniques par le numéro |nbsp ; Notes techniques par catégorie