Condividi tramite


Classe di CDynamicChain

Questa classe fornisce metodi che supportano concatenare dinamico di mappe messaggi.

Nota importanteImportante

Questa classe e i relativi membri non possono essere utilizzati nelle applicazioni eseguite in Windows Runtime.

class CDynamicChain

Membri

kxaxdc7s.collapse_all(it-it,VS.110).gifCostruttori pubblici

Nome

Descrizione

CDynamicChain::CDynamicChain

Costruttore.

CDynamicChain::~CDynamicChain

Il distruttore.

kxaxdc7s.collapse_all(it-it,VS.110).gifMetodi pubblici

Nome

Descrizione

CDynamicChain::CallChain

Esegue un messaggio di Windows alla mappa messaggi di un altro oggetto.

CDynamicChain::RemoveChainEntry

Rimuove una voce della mappa messaggi dalla raccolta.

CDynamicChain::SetChainEntry

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

Vedere anche

Riferimenti

Classe di CWindowImpl

Altre risorse

I cenni preliminari sulle classi ATL