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::SetChainEntry
ensuite :
myCtl.SetChainEntry(1313, &chainedObj);
où 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 OnSetFocus
que la procédure de fenêtre dirige le message vers chainedObj
la 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.