Partager via


CHAIN_MSG_MAP

Définit une entrée dans une table des messages.

CHAIN_MSG_MAP( theChainClass )

Paramètres

  • theChainClass
    [in] le nom de la classe de base contenant la table des messages.

Notes

CHAIN_MSG_MAP dirige des messages à une table des messages par défaut de classe de base (déclarée avec BEGIN_MSG_MAP). Pour exécuter des messages à une table des messages secondaire de classe de base (déclarée avec ALT_MSG_MAP), utilisez CHAIN_MSG_MAP_ALT.

Notes

Commencez toujours une table des messages avec BEGIN_MSG_MAP.Vous pouvez déclarer les tables des messages secondaires suivantes avec ALT_MSG_MAP.La macro d' END_MSG_MAP marque la carte du message.Chaque table des messages doit avoir une seule instance d' BEGIN_MSG_MAP et d' END_MSG_MAP.

Pour plus d'informations sur l'utilisation des tables des messages dans ATL, consultez tables des 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 montre ce qui suit :

  • Si une procédure de fenêtre utilise la table des messages par défaut d'CMyClass et OnPaint ne gère pas de message, le message est dirigé vers la table des messages par défaut d'CMyBaseClass pour traiter.

  • Si une procédure de fenêtre utilise la première table des messages secondaire dans CMyClass, tous les messages sont dirigés vers la table des messages par défaut d'CMyBaseClass.

  • Si une procédure de fenêtre utilise la table des messages secondaire d'CMyClass deuxième et OnChar ne gère pas de message, le message est dirigé vers la table des messages secondaire spécifiée dans CMyBaseClass. CMyBaseClass doit être déclaré cette table des messages avec ALT_MSG_MAP(1).

Configuration requise

Header: atlwin.h

Voir aussi

Référence

CHAIN_MSG_MAP_MEMBER

CHAIN_MSG_MAP_DYNAMIC

MESSAGE_HANDLER

Autres ressources

Macros de table des messages (ATL)

Macros ATL