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 |
---|---|
Constructeur. |
|
Le destructeur. |
Méthodes publiques
Nom |
Description |
---|---|
Dirige une boîte de message windows à la table des messages d'un autre objet. |
|
Supprime une entrée de la table des messages de la collection. |
|
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