Notifications de personnalisation de gestion
Un contrôle commun de barre d'outils windows comprend les fonctionnalités intégrées de personnalisation, y compris une boîte de dialogue définie par le système de personnalisation, qui permettent l'utilisateur à insérer, supprimer, ou réorganiser des boutons de barre d'outils.L'application détermine si les fonctionnalités de personnalisation sont disponibles et contrôle le point vers lequel l'utilisateur peut personnaliser la barre d'outils.
Vous pouvez rendre ces des fonctionnalités de personnalisation disponibles à l'utilisateur en fournissant une barre d'outils à CCS_ADJUSTABLE les styles.Les fonctionnalités de personnalisation permettent à l'utilisateur de faire glisser un bouton à une nouvelle position ou pour supprimer un bouton en le faisant glisser en dehors de la barre d'outils.En outre, l'utilisateur peut double-cliquez sur la barre d'outils pour afficher la boîte de dialogue de Customize Toolbar , qui permet à l'utilisateur d'ajouter, de supprimer, et organiser les boutons de barre d'outils.l'application peut afficher la boîte de dialogue à l'aide de la fonction membre de personnalisez .
Le contrôle de barre d'outils envoie des messages de notification à la fenêtre parente à chaque étape du processus de personnalisation.Si l'utilisateur maintient la touche MAJ et commence faisant glisser un bouton, la barre d'outils gère automatiquement l'opération glisser.La barre d'outils envoie le message de notification de TBN_QUERYDELETE à la fenêtre parente pour déterminer si le bouton peut être supprimé.L'opération de glissement se termine si la fenêtre parente retourne FALSE.Sinon, la barre d'outils capture des entrées de la souris et attend l'utilisateur pour libérer le bouton de la souris.
Lorsque l'utilisateur relâche le bouton de la souris, le contrôle de barre d'outils détermine l'emplacement du curseur de la souris.Si le curseur se trouve à l'extérieur de la barre d'outils, le bouton est supprimé.Si le curseur se trouve sur un autre bouton de barre d'outils, la barre d'outils envoie le message de notification de TBN_QUERYINSERT à la fenêtre parente pour déterminer si un bouton peut être inséré à gauche du bouton donné.Le bouton est inséré si la fenêtre parente retourne TRUE; sinon, il n'est pas.La barre d'outils envoie le message de notification de TBN_TOOLBARCHANGE pour signaler la fin de l'opération glisser.
Si l'utilisateur lance une opération glisser ne maintenez pas la touche MAJ enfoncée, le contrôle de barre d'outils envoie le message de notification de TBN_BEGINDRAG à la fenêtre propriétaire.Une application qui implémente son propre code bouton-faisant glisser peut utiliser ce message comme signal pour démarrer une opération glisser.La barre d'outils envoie le message de notification de TBN_ENDDRAG pour signaler la fin de l'opération glisser.
Un contrôle de barre d'outils envoie des messages de notification lorsque l'utilisateur personnalise une barre d'outils à l'aide de la boîte de dialogue de Customize Toolbar .La barre d'outils envoie le message de notification de TBN_BEGINADJUST après que l'utilisateur double-clique sur la barre d'outils, mais avant la boîte de dialogue est créée.Ensuite, la barre d'outils commence envoyer une série de messages de notification de TBN_QUERYINSERT pour déterminer si la barre d'outils permet des boutons à insérer.Lorsque la fenêtre parente retourne TRUE, la barre d'outils cesse d'envoyer des messages de notification de TBN_QUERYINSERT .Si la fenêtre parente ne retourne pas TRUE pour un bouton, la barre d'outils détruit la boîte de dialogue.
Ensuite, le contrôle de barre d'outils détermine si les boutons peuvent être supprimés de la barre d'outils en envoyant un message de notification de TBN_QUERYDELETE pour chaque bouton dans la barre d'outils.La fenêtre parente retourne TRUE pour indiquer qu'un bouton peut être supprimé ; sinon, il retourne FALSE.La barre d'outils ajoute tous les boutons de barre d'outils à la boîte de dialogue, mais gris ceux qui ne peuvent être supprimés.
Chaque fois que le contrôle de barre d'outils a besoin d'informations sur un bouton dans la boîte de dialogue de barre d'outils de personnaliser, il envoie le message de notification de TBN_GETBUTTONINFO , en spécifiant l'index de ce bouton pour lequel il a besoin de données et de l'adresse d'une structure de TBNOTIFY .La fenêtre parente doit satisfaire structure avec les informations pertinentes.
La boîte de dialogue de Customize Toolbar inclut un bouton d'aide et un bouton de réinitialisation.Lorsque l'utilisateur choisit le bouton d'aide, le contrôle de barre d'outils envoie le message de notification de TBN_CUSTHELP .La fenêtre parente doit répondre en affichant l'aide.La boîte de dialogue envoie le message de notification de TBN_RESET lorsque l'utilisateur sélectionne le bouton de réinitialisation.Ce message signale que la barre d'outils est sur le point de réinitialiser la boîte de dialogue.
Ces messages sont tous les messages de WM_NOTIFY , qui peuvent être gérés dans votre fenêtre propriétaire en ajoutant des entrées de la table des messages du formulaire suivant à la table des messages de la fenêtre propriétaire :
ON_NOTIFY( wNotifyCode, idControl, memberFxn )
wNotifyCode
Code d'identificateur de message de notification, tel que TBN_BEGINADJUST.idControl
l'identificateur de l'émission de contrôle la notification.memberFxn
La fonction membre à appeler lorsque cette notification est reçue.
Votre fonction membre est déclarée avec le prototype suivant :
afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );
Si le gestionnaire de messages de notification retourne une valeur, elle doit le placer dans LRESULT désigné par le résultat.
Pour chaque message, points d' pNotifyStruct à une structure de NMHDR ou à une structure de TBNOTIFY .Ces structures sont décrites ci-dessous :
La structure de NMHDR contient les membres suivants :
typedef struct tagNMHDR {
HWND hwndFrom; // handle of control sending message
UINT idFrom;// identifier of control sending message
UINT code; // notification code; see below
} NMHDR;
hwndFrom
Handle de la fenêtre du contrôle qui envoie la notification.Pour convertir ce handle vers un pointeur d' CWnd , utilisez CWnd::FromHandle.idFrom
Identificateur de l'émission de contrôle la notification.code
Le code de notification.Ce membre peut être détails d'une valeur à un type de contrôle, telles que TBN_BEGINADJUST ou TTN_NEEDTEXT, ou il peut être une des valeurs communes de notification répertoriées ci-dessous :NM_CLICK l'utilisateur a cliqué sur le bouton gauche de la souris dans le contrôle.
NM_DBLCLK l'utilisateur a double-cliquez sur le bouton gauche de la souris dans le contrôle.
NM_KILLFOCUS le contrôle a perdu le focus d'entrée.
NM_OUTOFMEMORY le contrôle ne peut pas effectuer une opération parce qu'il n'y a pas assez de mémoire libre.
NM_RCLICK l'utilisateur a cliqué sur le bouton de la souris dans le contrôle.
NM_RDBLCLK l'utilisateur a double-cliqué le bouton droit de la souris dans le contrôle.
NM_RETURN le contrôle a le focus d'entrée, et l'utilisateur a utilisateur appuie sur la touche ENTRÉE.
NM_SETFOCUS le contrôle a reçu le focus d'entrée.
La structure de TBNOTIFY contient les membres suivants :
typedef struct {
NMHDR hdr; // information common to all WM_NOTIFY messages
int iItem; // index of button associated with notification
TBBUTTON tbButton; // info about button associated withnotification
int cchText; // count of characters in button text
LPSTR lpszText;// address of button text
} TBNOTIFY, FAR* LPTBNOTIFY;
Notes
hdr
Communes à tous les messages de WM_NOTIFY .iItem
Index de bouton associé à la notification.tbButton
La structure d'TBBUTTON qui contient des informations sur le bouton de barre d'outils associée à la notification.cchText
Nombre de caractères dans le texte du bouton.lpszText
Pointeur vers le texte du bouton.
Les notifications que la barre d'outils envoie sont les suivantes :
TBN_BEGINADJUST envoyées lorsque l'utilisateur commence la personnalisation d'un contrôle de barre d'outils.Les points du pointeur vers NMHDR structure qui contient des informations sur la notification.Le gestionnaire n'a pas besoin de ne retourner aucune valeur spécifique.
TBN_BEGINDRAG envoyées lorsque l'utilisateur commence faisant glisser un bouton dans un contrôle de barre d'outils.Les points du pointeur vers une structure de TBNOTIFY .Le membre d' iItem contient l'index de base zéro du bouton déplacé.Le gestionnaire n'a pas besoin de ne retourner aucune valeur spécifique.
TBN_CUSTHELP envoyées lorsque l'utilisateur choisit le bouton d'aide dans la boîte de dialogue de barre d'outils de personnaliser.Aucune valeur de retour.Les points du pointeur vers NMHDR structure qui contient des informations sur le message de notification.Le gestionnaire n'a pas besoin de ne retourner aucune valeur spécifique.
TBN_ENDADJUST envoyées lorsque l'utilisateur arrête de personnaliser un contrôle de barre d'outils.Les points du pointeur vers NMHDR structure qui contient des informations sur le message de notification.Le gestionnaire n'a pas besoin de ne retourner aucune valeur spécifique.
TBN_ENDDRAG envoyées lorsque l'utilisateur arrête de faire glisser un bouton dans un contrôle de barre d'outils.Les points du pointeur vers une structure de TBNOTIFY .Le membre d' iItem contient l'index de base zéro du bouton déplacé.Le gestionnaire n'a pas besoin de ne retourner aucune valeur spécifique.
TBN_GETBUTTONINFO envoyées lorsque l'utilisateur personnalise un contrôle de barre d'outils.La barre d'outils utilise ce message de notification pour récupérer les informations nécessaires par la boîte de dialogue de barre d'outils de personnaliser.Les points du pointeur vers une structure de TBNOTIFY .Le membre d' iItem spécifie l'index de base zéro d'un bouton.Les membres de pszText et de cchText spécifiez l'adresse et la longueur, en caractères, du texte du bouton actuel.Une application doit remplir structure avec les informations sur le bouton.TRUE De retour si les informations de bouton étaient copiés à la structure, ou FALSE sinon.
TBN_QUERYDELETE envoyées lorsque l'utilisateur personnalise une barre d'outils pour déterminer si un bouton peut être supprimé d'un contrôle de barre d'outils.Les points du pointeur vers une structure de TBNOTIFY .Le membre d' iItem contient l'index de base zéro du bouton à supprimer.TRUE De retour pour permettre le bouton à supprimer ou FALSE pour empêcher le bouton d'être supprimé.
TBN_QUERYINSERT envoyées lorsque l'utilisateur personnalise un contrôle de barre d'outils pour déterminer si un bouton peut être inséré à gauche du bouton donné.Les points du pointeur vers une structure de TBNOTIFY .Le membre d' iItem contient l'index de base zéro du bouton à insérer.TRUE De retour pour permettre un bouton à insérer devant le bouton donné ou FALSE pour empêcher le bouton d'être inséré.
TBN_RESET envoyées lorsque l'utilisateur réinitialise le contenu de la boîte de dialogue de barre d'outils de personnaliser.Les points du pointeur vers NMHDR structure qui contient des informations sur le message de notification.Le gestionnaire n'a pas besoin de ne retourner aucune valeur spécifique.
TBN_TOOLBARCHANGE envoyées une fois que l'utilisateur a personnaliser un contrôle de barre d'outils.Les points du pointeur vers NMHDR structure qui contient des informations sur le message de notification.Le gestionnaire n'a pas besoin de ne retourner aucune valeur spécifique.