Partilhar via


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

Consulte também

Referência

Classe CWindowImpl

Outros recursos

CDynamicChain membros

Visão geral do ATL classe