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 |
---|---|
el constructor. |
|
El destructor. |
Métodos públicos
Name |
Descripción |
---|---|
Envía un mensaje de Windows al mapa de mensajes de otro objeto. |
|
Quita una entrada del mapa de mensajes de la colección. |
|
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