Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Esta clase proporciona métodos que admiten el encadenamiento dinámico de mapas de mensajes.
Importante
Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.
Sintaxis
class CDynamicChain
Miembros
Constructores públicos
| Nombre | Descripción |
|---|---|
| CDynamicChain::CDynamicChain | Constructor . |
| CDynamicChain::~CDynamicChain | El destructor . |
Métodos públicos
| Nombre | Descripción |
|---|---|
| CDynamicChain::CallChain | Dirige un mensaje de Windows al mapa de mensajes de otro objeto. |
| CDynamicChain::RemoveChainEntry | Quita una entrada de mapa de mensajes de la colección. |
| CDynamicChain::SetChainEntry | Agrega una entrada de mapa de mensajes a la colección o modifica una entrada existente. |
Comentarios
CDynamicChain administra una colección de asignaciones de mensajes, lo que permite dirigir un mensaje de Windows en tiempo de ejecución a otro mapa de mensajes de otro objeto.
Para agregar compatibilidad con el encadenamiento dinámico de asignaciones de mensajes, haga lo siguiente:
Derive la clase de
CDynamicChain. En el mapa de mensajes, especifique la macro CHAIN_MSG_MAP_DYNAMIC que se va a encadenar a la asignación de mensajes predeterminada de otro objeto.Derive cada clase a la que quiera encadenar desde CMessageMap.
CMessageMappermite que un objeto exponga sus mapas de mensajes a otros objetos.Llame a
CDynamicChain::SetChainEntrypara identificar a qué objeto y a qué mapa de mensajes desea encadenar.
Por ejemplo, supongamos que la clase se define de la siguiente manera:
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, el cliente llama a CMyWindow::SetChainEntry:
myCtl.SetChainEntry(1313, &chainedObj);
donde chainedObj es el objeto encadenado y es una instancia de una clase derivada de CMessageMap. Ahora, si myCtl recibe un mensaje que no se controla mediante OnPaint o OnSetFocus, el procedimiento de ventana dirige el mensaje a la asignación chainedObjde mensajes predeterminada.
Para más información sobre el mapa de mensajes, vea Mapas de mensajes en el artículo "Clases de ventanas ATL".
Requisitos
Encabezado: atlwin.h
CDynamicChain::CallChain
Dirige el mensaje de Windows al mapa de mensajes de otro objeto.
BOOL CallChain(
DWORD dwChainID,
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
LRESULT& lResult);
Parámetros
dwChainID
[in] Identificador único asociado al objeto encadenado y su asignación de mensajes.
hWnd
[in] Identificador de la ventana que recibe el mensaje.
uMsg
[in] Mensaje enviado a la ventana.
wParam
[in] Información adicional específica del mensaje.
lParam
[in] Información adicional específica del mensaje.
lResult
[out] Resultado del procesamiento de mensajes.
Valor devuelto
TRUE si se procesa completamente el mensaje; de lo contrario, FALSE.
Comentarios
Para que el procedimiento de ventana invoque CallChain, debe especificar la macro CHAIN_MSG_MAP_DYNAMIC en el mapa de mensajes. Para obtener un ejemplo, consulte la introducción a CDynamicChain.
CallChain requiere una llamada anterior a SetChainEntry para asociar el valor dwChainID con un objeto y su asignación de mensajes.
CDynamicChain::CDynamicChain
Constructor .
CDynamicChain();
CDynamicChain::~CDynamicChain
El destructor .
~CDynamicChain();
Comentarios
Libera todos los recursos asignados.
CDynamicChain::RemoveChainEntry
Quita el mapa mensaje especificado de la colección.
BOOL RemoveChainEntry(DWORD dwChainID);
Parámetros
dwChainID
[in] Identificador único asociado al objeto encadenado y su asignación de mensajes. Este valor se define originalmente a través de una llamada a SetChainEntry.
Valor devuelto
TRUE si el mapa de mensajes se quita correctamente de la colección. De lo contrario, FALSE.
CDynamicChain::SetChainEntry
Agrega el mapa de mensaje especificado a la colección.
BOOL SetChainEntry(
DWORD dwChainID,
CMessageMap* pObject,
DWORD dwMsgMapID = 0);
Parámetros
dwChainID
[in] Identificador único asociado al objeto encadenado y su asignación de mensajes.
pObject
[in] Puntero al objeto encadenado que declara el mapa de mensajes. La clase de este objeto debe derivarse de CMessageMap.
dwMsgMapID
[in] Identificador del mapa de mensajes en el objeto encadenado. El valor predeterminado es 0, que identifica el mapa de mensajes predeterminado declarado con BEGIN_MSG_MAP. Para usar un mapa de mensajes alternativo, declarado con ALT_MSG_MAP(msgMapID) pase msgMapID.
Valor devuelto
TRUE si el mapa de mensajes se añade correctamente a la colección. De lo contrario, FALSE.
Comentarios
Si el valor dwChainID ya existe en la colección, su objeto asociado y mapa de mensajes se reemplazan por pObject y dwMsgMapID, respectivamente. De lo contrario, se agrega una nueva entrada.