Classe di CDynamicChain
Questa classe fornisce metodi che supportano concatenare dinamico di mappe messaggi.
Importante |
---|
Questa classe e i relativi membri non possono essere utilizzati nelle applicazioni eseguite in Windows Runtime. |
class CDynamicChain
Membri
Costruttori pubblici
Nome |
Descrizione |
---|---|
Costruttore. |
|
Il distruttore. |
Metodi pubblici
Nome |
Descrizione |
---|---|
Esegue un messaggio di Windows alla mappa messaggi di un altro oggetto. |
|
Rimuove una voce della mappa messaggi dalla raccolta. |
|
Aggiunge una voce della mappa messaggi alla raccolta o modifica un elemento esistente. |
Note
CDynamicChain gestisce una raccolta di mappe messaggi, consentendo a un messaggio di Windows da eseguire, in fase di esecuzione, alla mappa messaggi di un altro oggetto.
Per aggiungere il supporto per concatenare dinamico delle mappe dei messaggi, effettuare le operazioni seguenti:
Derivare la classe da CDynamicChain.Nella mappa messaggi, specificare la macro CHAIN_MSG_MAP_DYNAMIC per concatenare alla mappa messaggi predefinita di un altro oggetto.
Ogni classe derivano da concatenare da CMessageMap.CMessageMap consente a un oggetto di esporre le mappe dei messaggi ad altri oggetti.
Chiamare CDynamicChain::SetChainEntry per identificare a tale oggetto la cui mappa messaggi desiderati per concatenare.
Ad esempio, si supponga che la classe sia definita come segue:
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;
}
};
Il client chiama quindi CMyWindow::SetChainEntry:
myCtl.SetChainEntry(1313, &chainedObj);
dove chainedObj è l'oggetto concatenato ed è un'istanza di una classe derivata da CMessageMap.Ora, se myCtl riceve un messaggio che non viene gestito da OnPaint o da OnSetFocus, la routine della finestra indirizza il messaggio alla mappa messaggi predefinita di chainedObj.
Per ulteriori informazioni sulla mappa messaggi che concatena, vedere Mappe messaggi nell'articolo "classi di finestre di ATL."
Requisiti
Header: atlwin.h