Share via


CDynamicChain Class

Esta clase proporciona métodos que admiten el encadenamiento dinámico de los mapas de mensajes.

Importante

Esta clase y sus miembros no se pueden utilizar en las aplicaciones que se ejecutan en Windows en tiempo de ejecución.

class CDynamicChain

Members

Constructores públicos

Name

Descripción

CDynamicChain::CDynamicChain

el constructor.

CDynamicChain::~CDynamicChain

El destructor.

Métodos públicos

Name

Descripción

CDynamicChain::CallChain

Envía un mensaje de Windows al mapa de mensajes de otro objeto.

CDynamicChain::RemoveChainEntry

Quita una entrada del mapa de mensajes de la colección.

CDynamicChain::SetChainEntry

Agrega una entrada del mapa de mensajes a la colección o modifique una entrada existente.

Comentarios

CDynamicChain administra una colección de mapas de mensajes, habilitar un mensaje de Windows se envíen, en tiempo de ejecución, el mapa de mensajes de otro objeto.

Para agregar compatibilidad para el encadenamiento dinámico de los mapas de mensajes, haga lo siguiente:

  • derive la clase de CDynamicChain. En el mapa de mensajes, especifican la macro de CHAIN_MSG_MAP_DYNAMIC para encadenar el mapa de mensajes predeterminado de otro objeto.

  • Derive cada clase que desea encadenar de CMessageMap. CMessageMap permite a un objeto exponer los mapas de mensajes a otros objetos.

  • Llame a CDynamicChain::SetChainEntry para identificar a la que el objeto y que el mensaje asigna desee encadenar.

Por ejemplo, supongamos que la clase se define como sigue:

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;
   }
};

El cliente llama CMyWindow::SetChainEntry:

myCtl.SetChainEntry(1313, &chainedObj);

donde es el objeto encadenado y es una instancia chainedObj de una clase derivada de CMessageMap. Ahora, si myCtl recibe un mensaje que no está controlado por OnPaint o OnSetFocus, el procedimiento de ventana dirige el mensaje al mapa de mensajes predeterminado de los entity_chainedObj.

Para obtener más información acerca del encadenamiento del mapa de mensajes, vea Mapas de mensajes en el artículo “clases de ventana ATL.”

Requisitos

encabezado: atlwin.h

Vea también

Referencia

CWindowImpl Class

Otros recursos

ATL Class Overview