Partager via


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 CMyClassle mappage de messages par défaut et OnPaint ne gère pas de message, le message est dirigé vers CMyBaseClassla carte de messages par défaut pour le traitement.

  • Si une procédure de fenêtre utilise le premier mappage de messages de remplacement, CMyClasstous les messages sont dirigés vers CMyBaseClassla carte de messages par défaut.

  • Si une procédure de fenêtre utilise CMyClassla deuxième carte de messages de remplacement et OnChar ne gère pas un message, le message est dirigé vers la carte de messages de remplacement spécifiée dans CMyBaseClass. 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 CMyClassle mappage de messages par défaut et OnPaint ne gère pas de message, le message est dirigé vers m_objla carte de messages par défaut pour le traitement.

  • Si une procédure de fenêtre utilise le premier mappage de messages de remplacement, CMyClasstous les messages sont dirigés vers m_objla carte de messages par défaut.

  • Si une procédure de fenêtre utilise CMyClassla deuxième carte de messages de remplacement et OnChar ne gère pas un message, le message est dirigé vers la carte de messages de remplacement spécifiée.m_obj La classe CMyContainedClass 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.

Voir aussi

Macros