Clase CDynamicChainCDynamicChain Class

Esta clase proporciona métodos que admiten el encadenamiento dinámico de mapas de mensajes.This class provides methods supporting the dynamic chaining of message maps.

Importante

Esta clase y sus miembros no se pueden usar en aplicaciones que se ejecutan en Windows Runtime.This class and its members cannot be used in applications that execute in the Windows Runtime.

SintaxisSyntax

class CDynamicChain

MiembrosMembers

Constructores públicosPublic Constructors

NombreName DescripciónDescription
CDynamicChain::CDynamicChainCDynamicChain::CDynamicChain El constructor.The constructor.
CDynamicChain::-CDynamicChainCDynamicChain::~CDynamicChain Destructor.The destructor.

Métodos públicosPublic Methods

NombreName DescripciónDescription
CDynamicChain::CallChainCDynamicChain::CallChain Dirige un mensaje de Windows al mapa de mensajes de otro objeto.Directs a Windows message to another object's message map.
CDynamicChain::RemoveChainEntryCDynamicChain::RemoveChainEntry Quita una entrada de mapa de mensajes de la colección.Removes a message map entry from the collection.
CDynamicChain::SetChainEntryCDynamicChain::SetChainEntry Agrega una entrada de mapa de mensajes a la colección o modifica una entrada existente.Adds a message map entry to the collection or modifies an existing entry.

ObservacionesRemarks

CDynamicChainadministra una colección de mapas de mensajes, lo que permite que un mensaje de Windows se dirija, en tiempo de ejecución, al mapa de mensajes de otro objeto.CDynamicChain manages a collection of message maps, enabling a Windows message to be directed, at run time, to another object's message map.

Para agregar compatibilidad para el encadenamiento dinámico de mapas de mensajes, haga lo siguiente:To add support for dynamic chaining of message maps, do the following:

  • Derive su CDynamicChainclase de .Derive your class from CDynamicChain. En el mapa de mensajes, especifique la macro de CHAIN_MSG_MAP_DYNAMIC que se va a encadenar al mapa de mensajes predeterminado de otro objeto.In the message map, specify the CHAIN_MSG_MAP_DYNAMIC macro to chain to another object's default message map.

  • Derive cada clase a la que desee encadenar desde CMessageMap.Derive every class you want to chain to from CMessageMap. CMessageMappermite que un objeto exponga sus mapas de mensajes a otros objetos.CMessageMap allows an object to expose its message maps to other objects.

  • Llame CDynamicChain::SetChainEntry para identificar qué objeto y a qué mapa de mensajes desea encadenar.Call CDynamicChain::SetChainEntry to identify which object and which message map you want to chain to.

Por ejemplo, supongamos que la clase se define de la siguiente manera:For example, suppose your class is defined as follows:

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

A continuación, CMyWindow::SetChainEntryel cliente llama a:The client then calls CMyWindow::SetChainEntry:

myCtl.SetChainEntry(1313, &chainedObj);

donde chainedObj está el objeto encadenado y es CMessageMapuna instancia de una clase derivada de .where chainedObj is the chained object and is an instance of a class derived from CMessageMap. Ahora, myCtl si recibe un mensaje que OnPaint no OnSetFocusse controla por o chainedObj, el procedimiento de ventana dirige el mensaje al mapa de mensajes predeterminado .Now, if myCtl receives a message that is not handled by OnPaint or OnSetFocus, the window procedure directs the message to chainedObj's default message map.

Para obtener más información acerca del encadenamiento de mapas de mensajes, vea Mapas de mensajes en el artículo "Clases de ventana ATL."For more information about message map chaining, see Message Maps in the article "ATL Window Classes."

RequisitosRequirements

Encabezado: atlwin.hHeader: atlwin.h

CDynamicChain::CallChainCDynamicChain::CallChain

Dirige el mensaje de Windows al mapa de mensajes de otro objeto.Directs the Windows message to another object's message map.

BOOL CallChain(
    DWORD dwChainID,
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT& lResult);

ParámetrosParameters

dwChainIDdwChainID
[en] Identificador único asociado con el objeto encadenado y su mapa de mensajes.[in] The unique identifier associated with the chained object and its message map.

hWndhWnd
[en] El identificador de la ventana que recibe el mensaje.[in] The handle to the window receiving the message.

uMsguMsg
[en] El mensaje enviado a la ventana.[in] The message sent to the window.

wParamwParam
[en] Información adicional específica del mensaje.[in] Additional message-specific information.

lParamlParam
[en] Información adicional específica del mensaje.[in] Additional message-specific information.

lResultlResult
[fuera] El resultado del procesamiento de mensajes.[out] The result of the message processing.

Valor devueltoReturn Value

TRUESi el mensaje está completamente procesado; de lo contrario, FALSE.TRUE if the message is fully processed; otherwise, FALSE.

ObservacionesRemarks

Para que el CallChainprocedimiento de ventana se invoque , debe especificar la macro CHAIN_MSG_MAP_DYNAMIC en el mapa de mensajes.For the window procedure to invoke CallChain, you must specify the CHAIN_MSG_MAP_DYNAMIC macro in your message map. Para obtener un ejemplo, consulte la información general de CDynamicChain.For an example, see the CDynamicChain overview.

CallChainrequiere una llamada anterior a SetChainEntry para asociar el valor dwChainID con un objeto y su mapa de mensajes.CallChain requires a previous call to SetChainEntry to associate the dwChainID value with an object and its message map.

CDynamicChain::CDynamicChainCDynamicChain::CDynamicChain

El constructor.The constructor.

CDynamicChain();

CDynamicChain::-CDynamicChainCDynamicChain::~CDynamicChain

Destructor.The destructor.

~CDynamicChain();

ObservacionesRemarks

Libera todos los recursos asignados.Frees all allocated resources.

CDynamicChain::RemoveChainEntryCDynamicChain::RemoveChainEntry

Quita el mapa de mensajes especificado de la colección.Removes the specified message map from the collection.

BOOL RemoveChainEntry(DWORD dwChainID);

ParámetrosParameters

dwChainIDdwChainID
[en] Identificador único asociado con el objeto encadenado y su mapa de mensajes.[in] The unique identifier associated with the chained object and its message map. Originalmente se define este valor mediante una llamada a SetChainEntry.You originally define this value through a call to SetChainEntry.

Valor devueltoReturn Value

TRUESi el mapa de mensajes se quita correctamente de la colección.TRUE if the message map is successfully removed from the collection. De lo contrario, FALSE.Otherwise, FALSE.

CDynamicChain::SetChainEntryCDynamicChain::SetChainEntry

Agrega el mapa de mensajes especificado a la colección.Adds the specified message map to the collection.

BOOL SetChainEntry(
    DWORD dwChainID,
    CMessageMap* pObject,
    DWORD dwMsgMapID = 0);

ParámetrosParameters

dwChainIDdwChainID
[en] Identificador único asociado con el objeto encadenado y su mapa de mensajes.[in] The unique identifier associated with the chained object and its message map.

pObjectpObject
[en] Puntero al objeto encadenado que declara el mapa de mensajes.[in] A pointer to the chained object declaring the message map. Este objeto debe derivar de CMessageMap.This object must derive from CMessageMap.

dwMsgMapIDdwMsgMapID
[en] Identificador del mapa de mensajes en el objeto encadenado.[in] The identifier of the message map in the chained object. El valor predeterminado es 0, que identifica el mapa de mensajes predeterminado declarado con BEGIN_MSG_MAP.The default value is 0, which identifies the default message map declared with BEGIN_MSG_MAP. Para especificar un mapa de mensajes alternativo declarado msgMapIDcon ALT_MSG_MAP(msgMapID),pase .To specify an alternate message map declared with ALT_MSG_MAP(msgMapID), pass msgMapID.

Valor devueltoReturn Value

TRUESi el mapa de mensajes se agrega correctamente a la colección.TRUE if the message map is successfully added to the collection. De lo contrario, FALSE.Otherwise, FALSE.

ObservacionesRemarks

Si el valor dwChainID ya existe en la colección, su objeto asociado y el mapa de mensajes se reemplazan por pObject y dwMsgMapID, respectivamente.If the dwChainID value already exists in the collection, its associated object and message map are replaced by pObject and dwMsgMapID, respectively. De lo contrario, se agrega una nueva entrada.Otherwise, a new entry is added.

Consulte tambiénSee also

Clase CWindowImplCWindowImpl Class
Información general de clasesClass Overview