Macros de table des messages (ATL)
Ces macros définissent des mappages de messages et des entrées.
Nom | Description |
---|---|
ALT_MSG_MAP | Marque le début d’une autre carte de messages. |
BEGIN_MSG_MAP | Marque le début de la carte de messages par défaut. |
CHAIN_MSG_MAP_ALT | Chaîne à un autre mappage de messages dans la classe de base. |
CHAIN_MSG_MAP_ALT_MEMBER | Chaîne à un autre mappage de messages dans un membre de données de la classe. |
CHAIN_MSG_MAP | Chaîne à la carte de messages par défaut dans la classe de base. |
CHAIN_MSG_MAP_DYNAMIC | Chaîne au mappage de messages dans une autre classe au moment de l’exécution. |
CHAIN_MSG_MAP_MEMBER | Chaîne à la carte de messages par défaut dans un membre de données de la classe. |
COMMAND_CODE_HANDLER | Mappe un message WM_COMMAND à une fonction de gestionnaire, en fonction du code de notification. |
COMMAND_HANDLER | Mappe un message WM_COMMAND à une fonction de gestionnaire, en fonction du code de notification et de l’identificateur de l’élément de menu, du contrôle ou de l’accélérateur. |
COMMAND_ID_HANDLER | Mappe un message WM_COMMAND à une fonction de gestionnaire, en fonction de l’identificateur de l’élément de menu, du contrôle ou de l’accélérateur. |
COMMAND_RANGE_CODE_HANDLER | Mappe un message WM_COMMAND à une fonction de gestionnaire, en fonction du code de notification et d’une plage contiguë d’identificateurs de contrôle. |
COMMAND_RANGE_HANDLER | Mappe un message WM_COMMAND à une fonction de gestionnaire, en fonction d’une plage contiguë d’identificateurs de contrôle. |
DECLARE_EMPTY_MSG_MAP | Implémente une carte de messages vide. |
DEFAULT_REFLECTION_HANDLER | Fournit un gestionnaire par défaut pour les messages réfléchis qui ne sont pas gérés dans le cas contraire. |
END_MSG_MAP | Marque la fin d’une carte de messages. |
FORWARD_NOTIFICATIONS | Transfère les messages de notification à la fenêtre parente. |
MESSAGE_HANDLER | Mappe un message Windows à une fonction de gestionnaire. |
MESSAGE_RANGE_HANDLER | Mappe une plage contiguë de messages Windows à une fonction de gestionnaire. |
NOTIFY_CODE_HANDLER | Mappe un message WM_NOTIFY à une fonction de gestionnaire, en fonction du code de notification. |
NOTIFY_HANDLER | Mappe un message WM_NOTIFY à une fonction de gestionnaire, en fonction du code de notification et de l’identificateur de contrôle. |
NOTIFY_ID_HANDLER | Mappe un message WM_NOTIFY à une fonction de gestionnaire, en fonction de l’identificateur de contrôle. |
NOTIFY_RANGE_CODE_HANDLER | Mappe un message WM_NOTIFY à une fonction de gestionnaire, en fonction du code de notification et d’une plage contiguë d’identificateurs de contrôle. |
NOTIFY_RANGE_HANDLER | Mappe un message WM_NOTIFY à une fonction de gestionnaire, en fonction d’une plage contiguë d’identificateurs de contrôle. |
REFLECT_NOTIFICATIONS | Reflète les messages de notification dans la fenêtre qui les a envoyées. |
REFLECTED_COMMAND_CODE_HANDLER | Mappe un message WM_COMMAND réfléchi à une fonction de gestionnaire, en fonction du code de notification. |
REFLECTED_COMMAND_HANDLER | Mappe un message WM_COMMAND réfléchi à une fonction de gestionnaire, en fonction du code de notification et de l’identificateur de l’élément de menu, du contrôle ou de l’accélérateur. |
REFLECTED_COMMAND_ID_HANDLER | Mappe un message WM_COMMAND réfléchi à une fonction de gestionnaire, en fonction de l’identificateur de l’élément de menu, du contrôle ou de l’accélérateur. |
REFLECTED_COMMAND_RANGE_CODE_HANDLER | Mappe un message WM_COMMAND réfléchi à une fonction de gestionnaire, en fonction du code de notification et d’une plage contiguë d’identificateurs de contrôle. |
REFLECTED_COMMAND_RANGE_HANDLER | Mappe un message WM_COMMAND réfléchi à une fonction de gestionnaire, en fonction d’une plage contiguë d’identificateurs de contrôle. |
REFLECTED_NOTIFY_CODE_HANDLER | Mappe un message WM_NOTIFY réfléchi à une fonction de gestionnaire, en fonction du code de notification. |
REFLECTED_NOTIFY_HANDLER | Mappe un message WM_NOTIFY réfléchi à une fonction de gestionnaire, en fonction du code de notification et de l’identificateur de contrôle. |
REFLECTED_NOTIFY_ID_HANDLER | Mappe un message WM_NOTIFY réfléchi à une fonction de gestionnaire, en fonction de l’identificateur de contrôle. |
REFLECTED_NOTIFY_RANGE_CODE_HANDLER | Mappe un message WM_NOTIFY réfléchi à une fonction de gestionnaire, en fonction du code de notification et d’une plage contiguë d’identificateurs de contrôle. |
REFLECTED_NOTIFY_RANGE_HANDLER | Mappe un message WM_NOTIFY réfléchi à une fonction de gestionnaire, en fonction d’une plage contiguë d’identificateurs de contrôle. |
Spécifications
En-tête : atlwin.h
ALT_MSG_MAP
Marque le début d’une autre carte de messages.
ALT_MSG_MAP(msgMapID)
Paramètres
msgMapID
[in] Identificateur du mappage de messages.
Notes
ATL identifie chaque mappage de messages par un nombre. La carte de messages par défaut (déclarée avec la macro BEGIN_MSG_MAP) est identifiée par 0. Une autre carte de messages est identifiée par msgMapID.
Les mappages de messages sont utilisés pour traiter les messages envoyés à une fenêtre. Par exemple, CContainedWindow vous permet de spécifier l’identificateur d’une carte de messages dans l’objet conteneur. CContainedWindow ::WindowProc utilise ensuite cette carte de messages pour diriger les messages de la fenêtre autonome vers la fonction de gestionnaire appropriée ou vers une autre carte de messages. Pour obtenir la liste des macros qui déclarent des fonctions de gestionnaire, consultez BEGIN_MSG_MAP.
Commencez toujours une carte de messages avec BEGIN_MSG_MAP. Vous pouvez ensuite déclarer d’autres mappages de messages.
La macro END_MSG_MAP marque la fin de la carte de messages. Notez qu’il existe toujours exactement une instance de BEGIN_MSG_MAP et de END_MSG_MAP.
Pour plus d’informations sur l’utilisation des mappages de messages dans ATL, consultez Cartes de messages.
Exemple
L’exemple suivant montre la carte de messages par défaut et une autre carte de messages, chacune contenant une fonction de gestionnaire :
BEGIN_MSG_MAP(CMyOneAltClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()
L’exemple suivant montre deux mappages de messages de remplacement. Le mappage de messages par défaut est vide.
BEGIN_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()
Spécifications
En-tête : atlwin.h
BEGIN_MSG_MAP
Marque le début de la carte de messages par défaut.
BEGIN_MSG_MAP(theClass)
Paramètres
theClass
[in] Nom de la classe contenant le mappage de messages.
Notes
CWindowImpl ::WindowProc utilise le mappage de messages par défaut pour traiter les messages envoyés à la fenêtre. Le mappage de messages dirige les messages vers la fonction de gestionnaire appropriée ou vers une autre carte de messages.
Les macros suivantes mappent un message à une fonction de gestionnaire. Cette fonction doit être définie dans la classe.
Macro | Description |
---|---|
MESSAGE_HANDLER | Mappe un message Windows à une fonction de gestionnaire. |
MESSAGE_RANGE_HANDLER | Mappe une plage contiguë de messages Windows à une fonction de gestionnaire. |
COMMAND_HANDLER | Mappe un message WM_COMMAND à une fonction de gestionnaire, en fonction du code de notification et de l’identificateur de l’élément de menu, du contrôle ou de l’accélérateur. |
COMMAND_ID_HANDLER | Mappe un message WM_COMMAND à une fonction de gestionnaire, en fonction de l’identificateur de l’élément de menu, du contrôle ou de l’accélérateur. |
COMMAND_CODE_HANDLER | Mappe un message WM_COMMAND à une fonction de gestionnaire, en fonction du code de notification. |
COMMAND_RANGE_HANDLER | Mappe une plage contiguë de messages WM_COMMAND à une fonction de gestionnaire, en fonction de l’identificateur de l’élément de menu, du contrôle ou de l’accélérateur. |
NOTIFY_HANDLER | Mappe un message WM_NOTIFY à une fonction de gestionnaire, en fonction du code de notification et de l’identificateur de contrôle. |
NOTIFY_ID_HANDLER | Mappe un message WM_NOTIFY à une fonction de gestionnaire, en fonction de l’identificateur de contrôle. |
NOTIFY_CODE_HANDLER | Mappe un message WM_NOTIFY à une fonction de gestionnaire, en fonction du code de notification. |
NOTIFY_RANGE_HANDLER | Mappe une plage contiguë de messages WM_NOTIFY à une fonction de gestionnaire, en fonction de l’identificateur de contrôle. |
Les macros suivantes dirigent les messages vers une autre carte de messages. Ce processus est appelé « chaînage ».
Macro | Description |
---|---|
CHAIN_MSG_MAP | Chaîne à la carte de messages par défaut dans la classe de base. |
CHAIN_MSG_MAP_MEMBER | Chaîne à la carte de messages par défaut dans un membre de données de la classe. |
CHAIN_MSG_MAP_ALT | Chaîne à un autre mappage de messages dans la classe de base. |
CHAIN_MSG_MAP_ALT_MEMBER | Chaîne à un autre mappage de messages dans un membre de données de la classe. |
CHAIN_MSG_MAP_DYNAMIC | Chaîne à la carte de messages par défaut dans une autre classe au moment de l’exécution. |
Les macros suivantes dirigent les messages « reflétés » à partir de la fenêtre parente. Par exemple, un contrôle envoie normalement des messages de notification à sa fenêtre parente pour traitement, mais la fenêtre parente peut refléter le message à nouveau dans le contrôle.
Macro | Description |
---|---|
REFLECTED_COMMAND_HANDLER | Mappe un message WM_COMMAND réfléchi à une fonction de gestionnaire, en fonction du code de notification et de l’identificateur de l’élément de menu, du contrôle ou de l’accélérateur. |
REFLECTED_COMMAND_ID_HANDLER | Mappe un message WM_COMMAND réfléchi à une fonction de gestionnaire, en fonction de l’identificateur de l’élément de menu, du contrôle ou de l’accélérateur. |
REFLECTED_COMMAND_CODE_HANDLER | Mappe un message WM_COMMAND réfléchi à une fonction de gestionnaire, en fonction du code de notification. |
REFLECTED_COMMAND_RANGE_HANDLER | Mappe un message WM_COMMAND réfléchi à une fonction de gestionnaire, en fonction d’une plage contiguë d’identificateurs de contrôle. |
REFLECTED_COMMAND_RANGE_CODE_HANDLER | Mappe un message WM_COMMAND réfléchi à une fonction de gestionnaire, en fonction du code de notification et d’une plage contiguë d’identificateurs de contrôle. |
REFLECTED_NOTIFY_HANDLER | Mappe un message WM_NOTIFY réfléchi à une fonction de gestionnaire, en fonction du code de notification et de l’identificateur de contrôle. |
REFLECTED_NOTIFY_ID_HANDLER | Mappe un message WM_NOTIFY réfléchi à une fonction de gestionnaire, en fonction de l’identificateur de contrôle. |
REFLECTED_NOTIFY_CODE_HANDLER | Mappe un message WM_NOTIFY réfléchi à une fonction de gestionnaire, en fonction du code de notification. |
REFLECTED_NOTIFY_RANGE_HANDLER | Mappe un message WM_NOTIFY réfléchi à une fonction de gestionnaire, en fonction d’une plage contiguë d’identificateurs de contrôle. |
REFLECTED_NOTIFY_RANGE_CODE_HANDLER | Mappe un message WM_NOTIFY réfléchi à une fonction de gestionnaire, en fonction du code de notification et d’une plage contiguë d’identificateurs de contrôle. |
Exemple
class CMyExtWindow : public CMyBaseWindow
{
public:
BEGIN_MSG_MAP(CMyExtWindow)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
CHAIN_MSG_MAP(CMyBaseWindow)
END_MSG_MAP()
LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
LRESULT OnSetFocus(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
Lorsqu’un CMyExtWindow
objet reçoit un message WM_PAINT, le message est dirigé vers CMyExtWindow::OnPaint
le traitement réel. Si OnPaint
le message nécessite un traitement supplémentaire, le message est alors dirigé vers la carte de messages par défaut dans CMyBaseWindow
.
Outre la carte de messages par défaut, vous pouvez définir une autre carte de messages avec ALT_MSG_MAP. Commencez toujours une carte de messages avec BEGIN_MSG_MAP. Vous pouvez ensuite déclarer d’autres mappages de messages. L’exemple suivant montre la carte de messages par défaut et une autre carte de messages, chacune contenant une fonction de gestionnaire :
BEGIN_MSG_MAP(CMyOneAltClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()
L’exemple suivant montre deux mappages de messages de remplacement. Le mappage de messages par défaut est vide.
BEGIN_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()
La macro END_MSG_MAP marque la fin de la carte de messages. Notez qu’il existe toujours exactement une instance de BEGIN_MSG_MAP et de END_MSG_MAP.
Pour plus d’informations sur l’utilisation des mappages de messages dans ATL, consultez Cartes de messages.
Spécifications
En-tête : atlwin.h
CHAIN_MSG_MAP_ALT
Définit une entrée dans une carte de messages.
CHAIN_MSG_MAP_ALT(theChainClass, msgMapID)
Paramètres
theChainClass
[in] Nom de la classe de base contenant le mappage de messages.
msgMapID
[in] Identificateur du mappage de messages.
Notes
CHAIN_MSG_MAP_ALT dirige les messages vers un autre mappage de messages dans une classe de base. Vous devez avoir déclaré cette autre carte de messages avec ALT_MSG_MAP(msgMapID). Pour diriger les messages vers la carte de messages par défaut d’une classe de base (déclarée avec BEGIN_MSG_MAP), utilisez CHAIN_MSG_MAP. Pour obtenir un exemple, consultez CHAIN_MSG_MAP.
Remarque
Commencez toujours une carte de messages avec BEGIN_MSG_MAP. Vous pouvez ensuite déclarer d’autres mappages de messages avec ALT_MSG_MAP. La macro END_MSG_MAP marque la fin de la carte de messages. Chaque mappage de messages doit avoir exactement une instance de BEGIN_MSG_MAP et de END_MSG_MAP.
Pour plus d’informations sur l’utilisation des mappages de messages dans ATL, consultez Cartes de messages.
Spécifications
En-tête : atlwin.h
CHAIN_MSG_MAP_ALT_MEMBER
Définit une entrée dans une carte de messages.
CHAIN_MSG_MAP_ALT_MEMBER(theChainMember, msgMapID)
Paramètres
theChainMember
[in] Nom du membre de données contenant le mappage de messages.
msgMapID
[in] Identificateur du mappage de messages.
Notes
CHAIN_MSG_MAP_ALT_MEMBER dirige les messages vers une autre carte de messages dans un membre de données. Vous devez avoir déclaré cette autre carte de messages avec ALT_MSG_MAP(msgMapID). Pour diriger les messages vers la carte de messages par défaut d’un membre de données (déclarée avec BEGIN_MSG_MAP), utilisez CHAIN_MSG_MAP_MEMBER. Pour obtenir un exemple, consultez CHAIN_MSG_MAP_MEMBER.
Remarque
Commencez toujours une carte de messages avec BEGIN_MSG_MAP. Vous pouvez ensuite déclarer d’autres mappages de messages avec ALT_MSG_MAP. La macro END_MSG_MAP marque la fin de la carte de messages. Chaque mappage de messages doit avoir exactement une instance de BEGIN_MSG_MAP et de END_MSG_MAP.
Pour plus d’informations sur l’utilisation des mappages de messages dans ATL, consultez Cartes de messages.
Spécifications
En-tête : atlwin.h
CHAIN_MSG_MAP
Définit une entrée dans une carte de messages.
CHAIN_MSG_MAP(theChainClass)
Paramètres
theChainClass
[in] Nom de la classe de base contenant le mappage de messages.
Notes
CHAIN_MSG_MAP dirige les messages vers la carte de messages par défaut d’une classe de base (déclarée avec BEGIN_MSG_MAP). Pour diriger les messages vers la carte de messages de remplacement d’une classe de base (déclarée avec ALT_MSG_MAP), utilisez CHAIN_MSG_MAP_ALT.
Remarque
Commencez toujours une carte de messages avec BEGIN_MSG_MAP. Vous pouvez ensuite déclarer d’autres mappages de messages avec ALT_MSG_MAP. La macro END_MSG_MAP marque la fin de la carte de messages. Chaque mappage de messages doit avoir exactement une instance de BEGIN_MSG_MAP et de END_MSG_MAP.
Pour plus d’informations sur l’utilisation des mappages de messages dans ATL, consultez Cartes de messages.
Exemple
class CMyExtClass : public CMyBaseClass
{
public:
BEGIN_MSG_MAP(CMyExtClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
// chain to default message map in CMyBaseClass
CHAIN_MSG_MAP(CMyBaseClass)
ALT_MSG_MAP(1)
// chain to first alternative message map in CMyBaseClass
CHAIN_MSG_MAP(CMyBaseClass)
ALT_MSG_MAP(2)
MESSAGE_HANDLER(WM_CHAR, OnChar)
// chain to alternate message map in CMyBaseClass
CHAIN_MSG_MAP_ALT(CMyBaseClass, 1)
END_MSG_MAP()
LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
LRESULT OnChar(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
Cet exemple illustre les éléments suivants :
Si une procédure de fenêtre utilise
CMyClass
le mappage de messages par défaut etOnPaint
ne gère pas de message, le message est dirigé versCMyBaseClass
la carte de messages par défaut pour le traitement.Si une procédure de fenêtre utilise le premier mappage de messages de remplacement,
CMyClass
tous les messages sont dirigés versCMyBaseClass
la carte de messages par défaut.Si une procédure de fenêtre utilise
CMyClass
la deuxième carte de messages de remplacement etOnChar
ne gère pas un message, le message est dirigé vers la carte de messages de remplacement spécifiée dansCMyBaseClass
.CMyBaseClass
doit avoir déclaré ce mappage de messages avec ALT_MSG_MAP(1).
Spécifications
En-tête : atlwin.h
CHAIN_MSG_MAP_DYNAMIC
Définit une entrée dans une carte de messages.
CHAIN_MSG_MAP_DYNAMIC(dynaChainID)
Paramètres
dynaChainID
[in] Identificateur unique de la carte de messages d’un objet.
Notes
CHAIN_MSG_MAP_DYNAMIC dirige les messages, au moment de l’exécution, vers la carte de messages par défaut dans un autre objet. L’objet et sa carte de messages sont associés à dynaChainID, que vous définissez via CDynamicChain ::SetChainEntry. Vous devez dériver votre classe CDynamicChain
pour utiliser CHAIN_MSG_MAP_DYNAMIC. Pour obtenir un exemple, consultez la vue d’ensemble de CDynamicChain .
Remarque
Commencez toujours une carte de messages avec BEGIN_MSG_MAP. Vous pouvez ensuite déclarer d’autres mappages de messages avec ALT_MSG_MAP. La macro END_MSG_MAP marque la fin de la carte de messages. Chaque mappage de messages doit avoir exactement une instance de BEGIN_MSG_MAP et de END_MSG_MAP.
Pour plus d’informations sur l’utilisation des mappages de messages dans ATL, consultez Cartes de messages.
Spécifications
En-tête : atlwin.h
CHAIN_MSG_MAP_MEMBER
Définit une entrée dans une carte de messages.
CHAIN_MSG_MAP_MEMBER(theChainMember)
Paramètres
theChainMember
[in] Nom du membre de données contenant le mappage de messages.
Notes
CHAIN_MSG_MAP_MEMBER dirige les messages vers la carte de messages par défaut d’un membre de données (déclarée avec BEGIN_MSG_MAP). Pour diriger les messages vers la carte de messages de remplacement d’un membre de données (déclarée avec ALT_MSG_MAP), utilisez CHAIN_MSG_MAP_ALT_MEMBER.
Remarque
Commencez toujours une carte de messages avec BEGIN_MSG_MAP. Vous pouvez ensuite déclarer d’autres mappages de messages avec ALT_MSG_MAP. La macro END_MSG_MAP marque la fin de la carte de messages. Chaque mappage de messages doit avoir exactement une instance de BEGIN_MSG_MAP et de END_MSG_MAP.
Pour plus d’informations sur l’utilisation des mappages de messages dans ATL, consultez Cartes de messages.
Exemple
class CMyContainerClass : public CWindowImpl<CMyContainerClass>
{
public:
CMyContainedClass m_obj;
BEGIN_MSG_MAP(CMyContainerClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
// chain to default message map of m_obj
CHAIN_MSG_MAP_MEMBER(m_obj)
ALT_MSG_MAP(1)
// chain to default message map of m_obj
CHAIN_MSG_MAP_MEMBER(m_obj)
ALT_MSG_MAP(2)
MESSAGE_HANDLER(WM_CHAR, OnChar)
// chain to alternate message map of m_obj
CHAIN_MSG_MAP_ALT_MEMBER(m_obj, 1)
END_MSG_MAP()
LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
LRESULT OnChar(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
Cet exemple illustre les éléments suivants :
Si une procédure de fenêtre utilise
CMyClass
le mappage de messages par défaut etOnPaint
ne gère pas de message, le message est dirigé versm_obj
la carte de messages par défaut pour le traitement.Si une procédure de fenêtre utilise le premier mappage de messages de remplacement,
CMyClass
tous les messages sont dirigés versm_obj
la carte de messages par défaut.Si une procédure de fenêtre utilise
CMyClass
la deuxième carte de messages de remplacement etOnChar
ne gère pas un message, le message est dirigé vers la carte de messages de remplacement spécifiée.m_obj
La classeCMyContainedClass
doit avoir déclaré ce mappage de messages avec ALT_MSG_MAP(1).
Spécifications
En-tête : atlwin.h
COMMAND_CODE_HANDLER
Comme pour COMMAND_HANDLER, mais mappe un message WM_COMMAND uniquement en fonction du code de notification.
COMMAND_CODE_HANDLER(code, func)
Paramètres
code
[in] Code de notification.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
COMMAND_HANDLER
Définit une entrée dans une carte de messages.
COMMAND_HANDLER(id, code, func)
Paramètres
id
[in] Identificateur de l’élément de menu, du contrôle ou de l’accélérateur.
code
[in] Code de notification.
func
[in] Nom de la fonction de gestionnaire de messages.
Notes
COMMAND_HANDLER mappe un message WM_COMMAND à la fonction de gestionnaire spécifiée, en fonction du code de notification et de l’identificateur de contrôle. Par exemple :
class ATL_NO_VTABLE CPolyProp :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CPolyProp, &CLSID_PolyProp>,
public IPropertyPageImpl<CPolyProp>,
public CDialogImpl<CPolyProp>
{
public:
BEGIN_COM_MAP(CPolyProp)
COM_INTERFACE_ENTRY(IPropertyPage)
END_COM_MAP()
BEGIN_MSG_MAP(CPolyProp)
COMMAND_HANDLER(IDC_SIDES, EN_CHANGE, OnEnChangeSides)
CHAIN_MSG_MAP(IPropertyPageImpl<CPolyProp>)
END_MSG_MAP()
// When a CPolyProp object receives a WM_COMMAND message identified
// by IDC_SIDES and EN_CHANGE, the message is directed to
// CPolyProp::OnEnChangeSides for the actual processing.
LRESULT OnEnChangeSides(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/,
BOOL& /*bHandled*/);
Toute fonction spécifiée dans une macro COMMAND_HANDLER doit être définie comme suit :
LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
Le mappage de messages a bHandled
la valeur TRUE avant CommandHandler
d’être appelé. S’il CommandHandler
ne gère pas complètement le message, il doit avoir bHandled
la valeur FALSE pour indiquer que le message a besoin d’un traitement supplémentaire.
Remarque
Commencez toujours une carte de messages avec BEGIN_MSG_MAP. Vous pouvez ensuite déclarer d’autres mappages de messages avec ALT_MSG_MAP. La macro END_MSG_MAP marque la fin de la carte de messages. Chaque mappage de messages doit avoir exactement une instance de BEGIN_MSG_MAP et de END_MSG_MAP.
En plus de COMMAND_HANDLER, vous pouvez utiliser MESSAGE_HANDLER pour mapper un message WM_COMMAND sans tenir compte d’un identificateur ou d’un code. Dans ce cas, MESSAGE_HANDLER(WM_COMMAND, OnHandlerFunction)
dirigera tous les messages WM_COMMAND vers OnHandlerFunction
.
Pour plus d’informations sur l’utilisation des mappages de messages dans ATL, consultez Cartes de messages.
Spécifications
En-tête : atlwin.h
COMMAND_ID_HANDLER
Comme pour COMMAND_HANDLER, mais mappe un message WM_COMMAND uniquement en fonction de l’identificateur de l’élément de menu, du contrôle ou de l’accélérateur.
COMMAND_ID_HANDLER(id, func)
Paramètres
id
[in] Identificateur de l’élément de menu, du contrôle ou de l’accélérateur envoyant le message.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
COMMAND_RANGE_CODE_HANDLER
Similaire à COMMAND_RANGE_HANDLER, mais mappe WM_COMMAND messages avec un code de notification spécifique d’une plage de contrôles à une fonction de gestionnaire unique.
COMMAND_RANGE_CODE_HANDLER(idFirst, idLast, code, func)
Paramètres
idFirst
[in] Marque le début d’une plage contiguë d’identificateurs de contrôle.
idLast
[in] Marque la fin d’une plage contiguë d’identificateurs de contrôle.
code
[in] Code de notification.
func
[in] Nom de la fonction de gestionnaire de messages.
Notes
Cette plage est basée sur l’identificateur de l’élément de menu, du contrôle ou de l’accélérateur envoyant le message.
Spécifications
En-tête : atlwin.h
COMMAND_RANGE_HANDLER
Similaire à COMMAND_HANDLER, mais mappe WM_COMMAND messages d’une plage de contrôles à une fonction de gestionnaire unique.
COMMAND_RANGE_HANDLER( idFirst, idLast, func)
Paramètres
idFirst
[in] Marque le début d’une plage contiguë d’identificateurs de contrôle.
idLast
[in] Marque la fin d’une plage contiguë d’identificateurs de contrôle.
func
[in] Nom de la fonction de gestionnaire de messages.
Notes
Cette plage est basée sur l’identificateur de l’élément de menu, du contrôle ou de l’accélérateur envoyant le message.
Spécifications
En-tête : atlwin.h
DECLARE_EMPTY_MSG_MAP
Déclare une carte de messages vide.
DECLARE_EMPTY_MSG_MAP()
Notes
DECLARE_EMPTY_MSG_MAP est une macro pratique qui appelle les macros BEGIN_MSG_MAP et END_MSG_MAP pour créer une carte de messages vide :
BEGIN_MSG_MAP(CExample)
END_MSG_MAP()
DEFAULT_REFLECTION_HANDLER
Fournit un gestionnaire par défaut pour la fenêtre enfant (contrôle) qui recevra des messages répercutés ; le gestionnaire transmet correctement les messages non gérés à DefWindowProc
.
DEFAULT_REFLECTION_HANDLER()
Spécifications
En-tête : atlwin.h
END_MSG_MAP
Marque la fin d’une carte de messages.
END_MSG_MAP()
Notes
Utilisez toujours la macro BEGIN_MSG_MAP pour marquer le début d’une carte de messages. Utilisez ALT_MSG_MAP pour déclarer d’autres mappages de messages.
Notez qu’il existe toujours exactement une instance de BEGIN_MSG_MAP et de END_MSG_MAP.
Pour plus d’informations sur l’utilisation des mappages de messages dans ATL, consultez Cartes de messages.
Exemple
L’exemple suivant montre la carte de messages par défaut et une autre carte de messages, chacune contenant une fonction de gestionnaire :
BEGIN_MSG_MAP(CMyOneAltClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()
L’exemple suivant montre deux mappages de messages de remplacement. Le mappage de messages par défaut est vide.
BEGIN_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()
Spécifications
En-tête : atlwin.h
FORWARD_NOTIFICATIONS
Transfère les messages de notification à la fenêtre parente.
FORWARD_NOTIFICATIONS()
Notes
Spécifiez cette macro dans le cadre de votre mappage de messages.
Spécifications
En-tête : atlwin.h
MESSAGE_HANDLER
Définit une entrée dans une carte de messages.
MESSAGE_HANDLER( msg, func )
Paramètres
msg
[in] Message Windows.
func
[in] Nom de la fonction de gestionnaire de messages.
Notes
MESSAGE_HANDLER mappe un message Windows à la fonction de gestionnaire spécifiée.
Toute fonction spécifiée dans une macro MESSAGE_HANDLER doit être définie comme suit :
LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
Le mappage de messages a bHandled
la valeur TRUE avant MessageHandler
d’être appelé. S’il MessageHandler
ne gère pas complètement le message, il doit avoir bHandled
la valeur FALSE pour indiquer que le message a besoin d’un traitement supplémentaire.
Remarque
Commencez toujours une carte de messages avec BEGIN_MSG_MAP. Vous pouvez ensuite déclarer d’autres mappages de messages avec ALT_MSG_MAP. La macro END_MSG_MAP marque la fin de la carte de messages. Chaque mappage de messages doit avoir exactement une instance de BEGIN_MSG_MAP et de END_MSG_MAP.
Outre MESSAGE_HANDLER, vous pouvez utiliser COMMAND_HANDLER et NOTIFY_HANDLER pour mapper WM_COMMAND et WM_NOTIFY messages, respectivement.
Pour plus d’informations sur l’utilisation des mappages de messages dans ATL, consultez Cartes de messages.
Exemple
class CMyBaseWindow : public CWindowImpl<CMyBaseWindow>
{
public:
BEGIN_MSG_MAP(CMyBaseWindow)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()
// When a CMyBaseWindow object receives a WM_CREATE message, the message
// is directed to CMyBaseWindow::OnCreate for the actual processing.
LRESULT OnCreate(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
Spécifications
En-tête : atlwin.h
MESSAGE_RANGE_HANDLER
Similaire à MESSAGE_HANDLER, mais mappe une plage de messages Windows à une fonction de gestionnaire unique.
MESSAGE_RANGE_HANDLER( msgFirst, msgLast, func )
Paramètres
msgFirst
[in] Marque le début d’une plage contiguë de messages.
msgLast
[in] Marque la fin d’une plage contiguë de messages.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
NOTIFY_CODE_HANDLER
Similaire à NOTIFY_HANDLER, mais mappe un message WM_NOTIFY uniquement en fonction du code de notification.
NOTIFY_CODE_HANDLER(cd, func)
Paramètres
cd
[in] Code de notification.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
NOTIFY_HANDLER
Définit une entrée dans une carte de messages.
NOTIFY_HANDLER( id, cd, func )
Paramètres
id
[in] Identificateur du contrôle envoyant le message.
cd
[in] Code de notification.
func
[in] Nom de la fonction de gestionnaire de messages.
Notes
NOTIFY_HANDLER mappe un message WM_NOTIFY à la fonction de gestionnaire spécifiée, en fonction du code de notification et de l’identificateur de contrôle.
Toute fonction spécifiée dans une macro NOTIFY_HANDLER doit être définie comme suit :
LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
Le mappage de messages a bHandled
la valeur TRUE avant NotifyHandler
d’être appelé. S’il NotifyHandler
ne gère pas complètement le message, il doit avoir bHandled
la valeur FALSE pour indiquer que le message a besoin d’un traitement supplémentaire.
Remarque
Commencez toujours une carte de messages avec BEGIN_MSG_MAP. Vous pouvez ensuite déclarer d’autres mappages de messages avec ALT_MSG_MAP. La macro END_MSG_MAP marque la fin de la carte de messages. Chaque mappage de messages doit avoir exactement une instance de BEGIN_MSG_MAP et de END_MSG_MAP.
En plus de NOTIFY_HANDLER, vous pouvez utiliser MESSAGE_HANDLER pour mapper un message WM_NOTIFY sans tenir compte d’un identificateur ou d’un code. Dans ce cas, MESSAGE_HANDLER(WM_NOTIFY, OnHandlerFunction)
dirigera tous les messages WM_NOTIFY vers OnHandlerFunction
.
Pour plus d’informations sur l’utilisation des mappages de messages dans ATL, consultez Cartes de messages.
Exemple
class CMyDialog2 : public CDialogImpl<CMyDialog2>
{
public:
enum { IDD = IDD_MYDLG };
BEGIN_MSG_MAP(CMyDialog2)
NOTIFY_HANDLER(IDC_TREE1, NM_CLICK, OnNMClickTree1)
END_MSG_MAP()
public:
// When a CMyDialog2 object receives a WM_NOTIFY message
// identified by IDC_TREE1 and NM_CLICK, the message is
// directed to CMyDialog2::OnNMClickTree1 for the actual
// processing.
LRESULT OnNMClickTree1(int /*idCtrl*/, LPNMHDR pNMHDR, BOOL& /*bHandled*/);
};
Spécifications
En-tête : atlwin.h
NOTIFY_ID_HANDLER
Similaire à NOTIFY_HANDLER, mais mappe un message WM_NOTIFY basé uniquement sur l’identificateur de contrôle.
NOTIFY_ID_HANDLER( id, func )
Paramètres
id
[in] Identificateur du contrôle envoyant le message.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
NOTIFY_RANGE_CODE_HANDLER
Similaire à NOTIFY_RANGE_HANDLER, mais mappe WM_NOTIFY messages avec un code de notification spécifique d’une plage de contrôles à une fonction de gestionnaire unique.
NOTIFY_RANGE_CODE_HANDLER( idFirst, idLast, cd, func )
Paramètres
idFirst
[in] Marque le début d’une plage contiguë d’identificateurs de contrôle.
idLast
[in] Marque la fin d’une plage contiguë d’identificateurs de contrôle.
cd
[in] Code de notification.
func
[in] Nom de la fonction de gestionnaire de messages.
Notes
Cette plage est basée sur l’identificateur du contrôle envoyant le message.
Spécifications
En-tête : atlwin.h
NOTIFY_RANGE_HANDLER
Similaire à NOTIFY_HANDLER, mais mappe WM_NOTIFY messages d’une plage de contrôles à une fonction de gestionnaire unique.
NOTIFY_RANGE_HANDLER( idFirst, idLast, func )
Paramètres
idFirst
[in] Marque le début d’une plage contiguë d’identificateurs de contrôle.
idLast
[in] Marque la fin d’une plage contiguë d’identificateurs de contrôle.
func
[in] Nom de la fonction de gestionnaire de messages.
Notes
Cette plage est basée sur l’identificateur du contrôle envoyant le message.
Spécifications
En-tête : atlwin.h
REFLECT_NOTIFICATIONS
Reflète les messages de notification de retour à la fenêtre enfant (contrôle) qui les a envoyées.
REFLECT_NOTIFICATIONS()
Notes
Spécifiez cette macro dans le cadre de la carte des messages de la fenêtre parente.
Spécifications
En-tête : atlwin.h
REFLECTED_COMMAND_CODE_HANDLER
Semblable à COMMAND_CODE_HANDLER, mais mappe les commandes reflétées à partir de la fenêtre parente.
REFLECTED_COMMAND_CODE_HANDLER( code, func )
Paramètres
code
[in] Code de notification.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
REFLECTED_COMMAND_HANDLER
Semblable à COMMAND_HANDLER, mais mappe les commandes reflétées à partir de la fenêtre parente.
REFLECTED_COMMAND_HANDLER( id, code, func )
Paramètres
id
[in] Identificateur de l’élément de menu, du contrôle ou de l’accélérateur.
code
[in] Code de notification.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
REFLECTED_COMMAND_ID_HANDLER
Semblable à COMMAND_ID_HANDLER, mais mappe les commandes reflétées à partir de la fenêtre parente.
REFLECTED_COMMAND_ID_HANDLER( id, func )
Paramètres
id
[in] Identificateur de l’élément de menu, du contrôle ou de l’accélérateur.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
REFLECTED_COMMAND_RANGE_CODE_HANDLER
Similaire à COMMAND_RANGE_CODE_HANDLER, mais mappe les commandes reflétées à partir de la fenêtre parente.
REFLECTED_COMMAND_RANGE_CODE_HANDLER( idFirst, idLast, code, func )
Paramètres
idFirst
[in] Marque le début d’une plage contiguë d’identificateurs de contrôle.
idLast
[in] Marque la fin d’une plage contiguë d’identificateurs de contrôle.
code
[in] Code de notification.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
REFLECTED_COMMAND_RANGE_HANDLER
Semblable à COMMAND_RANGE_HANDLER, mais mappe les commandes reflétées à partir de la fenêtre parente.
REFLECTED_COMMAND_RANGE_HANDLER( idFirst, idLast, func )
Paramètres
idFirst
[in] Marque le début d’une plage contiguë d’identificateurs de contrôle.
idLast
[in] Marque la fin d’une plage contiguë d’identificateurs de contrôle.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
REFLECTED_NOTIFY_CODE_HANDLER
Similaire à NOTIFY_CODE_HANDLER, mais mappe les notifications reflétées à partir de la fenêtre parente.
REFLECTED_NOTIFY_CODE_HANDLER_EX( cd, func )
Paramètres
cd
[in] Code de notification.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
REFLECTED_NOTIFY_HANDLER
Semblable à NOTIFY_HANDLER, mais mappe les notifications reflétées à partir de la fenêtre parente.
REFLECTED_NOTIFY_HANDLER( id, cd, func )
Paramètres
id
[in] Identificateur de l’élément de menu, du contrôle ou de l’accélérateur.
cd
[in] Code de notification.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
REFLECTED_NOTIFY_ID_HANDLER
Similaire à NOTIFY_ID_HANDLER, mais mappe les notifications reflétées à partir de la fenêtre parente.
REFLECTED_NOTIFY_ID_HANDLER( id, func )
Paramètres
id
[in] Identificateur de l’élément de menu, du contrôle ou de l’accélérateur.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
REFLECTED_NOTIFY_RANGE_CODE_HANDLER
Similaire à NOTIFY_RANGE_CODE_HANDLER, mais mappe les notifications reflétées à partir de la fenêtre parente.
REFLECTED_NOTIFY_RANGE_CODE_HANDLER( idFirst, idLast, cd, func )
Paramètres
idFirst
[in] Marque le début d’une plage contiguë d’identificateurs de contrôle.
idLast
[in] Marque la fin d’une plage contiguë d’identificateurs de contrôle.
cd
[in] Code de notification.
func
[in] Nom de la fonction de gestionnaire de messages.
Spécifications
En-tête : atlwin.h
REFLECTED_NOTIFY_RANGE_HANDLER
Semblable à NOTIFY_RANGE_HANDLER, mais mappe les notifications reflétées à partir de la fenêtre parente.
REFLECTED_NOTIFY_RANGE_HANDLER( idFirst, idLast, func )
Paramètres
idFirst
[in] Marque le début d’une plage contiguë d’identificateurs de contrôle.
idLast
[in] Marque la fin d’une plage contiguë d’identificateurs de contrôle.
func
[in] Nom de la fonction de gestionnaire de messages.