Partager via


CDynamicChain, classe

Cette classe fournit des méthodes qui prend en charge le chaînage dynamique des tables des messages.

Important

Cette classe et ses membres ne peuvent pas être utilisés dans les applications qui s'exécutent dans les fenêtres d'exécution.

class CDynamicChain

Membres

Constructeurs publics

Nom

Description

CDynamicChain::CDynamicChain

Constructeur.

CDynamicChain::~CDynamicChain

Le destructeur.

Méthodes publiques

Nom

Description

CDynamicChain::CallChain

Dirige une boîte de message windows à la table des messages d'un autre objet.

CDynamicChain::RemoveChainEntry

Supprime une entrée de la table des messages de la collection.

CDynamicChain::SetChainEntry

Ajoute une entrée de la table des messages à la collection ou modifie une entrée existante.

Notes

CDynamicChain gère une collection de tables des messages, ce qui permet à un message windows pour être exécuté, au moment de l'exécution, la table des messages d'un autre objet.

Pour ajouter la prise en charge du chaînage dynamique des tables des messages, procédez comme suit :

  • Dérivez votre classe d' CDynamicChain. Dans la table des messages, spécifiez la macro de CHAIN_MSG_MAP_DYNAMIC pour chaîner à la table des messages par défaut d'un autre objet.

  • Dérivez chaque classe que vous souhaitez chaîner valeur de CMessageMap. CMessageMap permet à un objet d'exposer ses tables des messages à d'autres objets.

  • Appelez CDynamicChain::SetChainEntry pour l'identifier auquel l'objet et à laquelle la table des messages vous souhaitez chaînage.

Par exemple, supposez que votre classe est définie comme suit :

class CMyChainWnd : public CWindowImpl<CMyChainWnd>,
   public CDynamicChain
{
public:
   CMyChainWnd() {}

   BEGIN_MSG_MAP(CMyChainWnd)
      MESSAGE_HANDLER(WM_PAINT, OnPaint)
      MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
      // dynamically chain to the default
      // message map in another object
      CHAIN_MSG_MAP_DYNAMIC(1313)
                // '1313' identifies the object
                // and the message map that will be
                // chained to. '1313' is defined
                // through the SetChainEntry method
   END_MSG_MAP()

   LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      // Do some painting code
      return 0;
   }

   LRESULT OnSetFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   { 
      return 0;
   }
};

Le client appelle ensuite CMyWindow::SetChainEntry:

myCtl.SetChainEntry(1313, &chainedObj);

où est l'objet chainedObj chaîné et est une instance d'une classe dérivée d' CMessageMap. Maintenant, si myCtl reçoit un message qui n'est pas géré par OnPaint ou OnSetFocus, la procédure de fenêtre dirige le message à la table des messages par défaut d'chainedObj.

Pour plus d'informations sur le chaînage de table des messages, consultez tables des messages dans l'article « classes de fenêtres ATL. »

Configuration requise

Header: atlwin.h

Voir aussi

Référence

CWindowImpl, classe

Autres ressources

Vue d'ensemble de la classe ATL