Classe CDynamicChain
Essa classe fornece métodos com suporte para o encadeamento dinâmicos de mapas de mensagem.
class CDynamicChain
Comentários
CDynamicChain gerencia uma coleção de mapas de mensagem, permitindo que uma mensagem do Windows ser direcionado em time de execução, para o MAP da mensagem do objeto.
Para adicionar suporte dinâmico de encadeamento de mapas de mensagem, faça o seguinte:
Derivar a classe de CDynamicChain. No MAP da mensagem, especifique o CHAIN_MSG_MAP_DYNAMIC macro para a cadeia de MAP da mensagem padrão do objeto.
Derivar de cada classe que você deseja cadeia de CMessageMap.CMessageMap permite que um objeto para expor seus mapas de mensagem a outros objetos.
De telefonarCDynamicChain::SetChainEntry para identificar qual objeto e o MAP da mensagem deseja cadeia.
Por exemplo, suponha que sua classe é definida da seguinte forma:
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;
}
};
O cliente, em seguida, chama CMyWindow::SetChainEntry:
myCtl.SetChainEntry(1313, &chainedObj);
em que chainedObj é o objeto encadeado e é uma instância de uma classe derivada de CMessageMap. Agora, se myCtl recebe uma mensagem que não é controlada pelo OnPaint ou OnSetFocus, o procedimento de janela direciona a mensagem chainedObjMAP da mensagem padrão.
Para obter mais informações sobre o encadeamento de MAP da mensagem, consulte Mapas de mensagem no artigo "ATL janela Classes".
Requisitos
Cabeçalho: atlwin.h