Partager via


CDynamicChain, classe

Cette classe fournit des méthodes prenant en charge le chaînage dynamique des mappages de messages.

Important

Cette classe et ses membres ne peuvent pas être utilisés dans les applications qui s’exécutent dans Windows Runtime.

Syntaxe

class CDynamicChain

Membres

Constructeurs publics

Nom Description
CDynamicChain ::CDynamicChain Constructeur .
CDynamicChain ::~CDynamicChain Destructeur.

Méthodes publiques

Nom Description
CDynamicChain ::CallChain Dirige un message Windows vers la carte de messages d’un autre objet.
CDynamicChain ::RemoveChainEntry Supprime une entrée de mappage de messages de la collection.
CDynamicChain ::SetChainEntry Ajoute une entrée de mappage de messages à la collection ou modifie une entrée existante.

Notes

CDynamicChain gère une collection de mappages de messages, permettant à un message Windows d’être dirigé, au moment de l’exécution, vers la carte de messages d’un autre objet.

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

  • Dérivez votre classe de CDynamicChain. Dans le mappage de messages, spécifiez la macro CHAIN_MSG_MAP_DYNAMIC à chaîner à la carte de messages par défaut d’un autre objet.

  • Dérivez chaque classe à laquelle vous souhaitez effectuer une chaîne à partir de CMessageMap. CMessageMap permet à un objet d’exposer ses messages mappés à d’autres objets.

  • Appelez CDynamicChain::SetChainEntry pour identifier l’objet et le mappage de messages vers lequel vous souhaitez effectuer une chaîne.

Par exemple, supposons que votre classe soit 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 CMyWindow::SetChainEntryensuite :

myCtl.SetChainEntry(1313, &chainedObj);

chainedObj est l’objet chaîné et est une instance d’une classe dérivée de CMessageMap. À présent, si myCtl elle reçoit un message qui n’est pas géré par OnPaint ou OnSetFocusque la procédure de fenêtre dirige le message vers chainedObjla carte de messages par défaut.

Pour plus d’informations sur le chaînage de cartes de messages, consultez l’article « Classes de fenêtre ATL ».

Spécifications

En-tête : atlwin.h

CDynamicChain ::CallChain

Dirige le message Windows vers la carte de messages d’un autre objet.

BOOL CallChain(
    DWORD dwChainID,
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT& lResult);

Paramètres

dwChainID
[in] Identificateur unique associé à l’objet chaîné et à sa carte de messages.

hWnd
[in] Handle de la fenêtre qui reçoit le message.

uMsg
[in] Message envoyé à la fenêtre.

wParam
[in] Informations supplémentaires spécifiques aux messages.

lParam
[in] Informations supplémentaires spécifiques aux messages.

lResult
[out] Résultat du traitement des messages.

Valeur de retour

TRUE si le message est entièrement traité ; sinon, FALSE.

Notes

Pour que la procédure de fenêtre à appeler CallChain, vous devez spécifier la macro CHAIN_MSG_MAP_DYNAMIC dans votre mappage de messages. Pour obtenir un exemple, consultez la vue d’ensemble de CDynamicChain .

CallChain nécessite un appel précédent à SetChainEntry pour associer la valeur dwChainID à un objet et à sa carte de messages.

CDynamicChain ::CDynamicChain

Constructeur .

CDynamicChain();

CDynamicChain ::~CDynamicChain

Destructeur.

~CDynamicChain();

Notes

Libère toutes les ressources allouées.

CDynamicChain ::RemoveChainEntry

Supprime le mappage de messages spécifié de la collection.

BOOL RemoveChainEntry(DWORD dwChainID);

Paramètres

dwChainID
[in] Identificateur unique associé à l’objet chaîné et à sa carte de messages. Vous définissez cette valeur à l’origine via un appel à SetChainEntry.

Valeur de retour

TRUE si la carte de messages est correctement supprimée de la collection. Sinon, FALSE.

CDynamicChain ::SetChainEntry

Ajoute le mappage de messages spécifié à la collection.

BOOL SetChainEntry(
    DWORD dwChainID,
    CMessageMap* pObject,
    DWORD dwMsgMapID = 0);

Paramètres

dwChainID
[in] Identificateur unique associé à l’objet chaîné et à sa carte de messages.

pObject
[in] Pointeur vers l’objet chaîné déclarant la carte de messages. Cet objet doit dériver de CMessageMap.

dwMsgMapID
[in] Identificateur du mappage de messages dans l’objet chaîné. La valeur par défaut est 0, qui identifie la carte de messages par défaut déclarée avec BEGIN_MSG_MAP. Pour spécifier une autre carte de messages déclarée avec ALT_MSG_MAP(msgMapID),passez msgMapID.

Valeur de retour

TRUE si la carte de messages est correctement ajoutée à la collection. Sinon, FALSE.

Notes

Si la valeur dwChainID existe déjà dans la collection, son objet associé et son mappage de messages sont remplacés par pObject et dwMsgMapID, respectivement. Sinon, une nouvelle entrée est ajoutée.

Voir aussi

CWindowImpl, classe
Vue d’ensemble de la classe