Partilhar via


Classe de CDynamicChain

Essa classe fornece métodos que suportam encadeamento dinâmica de mapas de mensagem.

Observação importanteImportante

Essa classe e seus membros não podem ser usados em aplicativos executados em tempo de execução do windows.

class CDynamicChain

Membros

kxaxdc7s.collapse_all(pt-br,VS.110).gifConstrutores public

Nome

Descrição

CDynamicChain::CDynamicChain

o construtor.

CDynamicChain::~CDynamicChain

O destrutor.

kxaxdc7s.collapse_all(pt-br,VS.110).gifMétodos públicos

Nome

Descrição

CDynamicChain::CallChain

Direciona uma mensagem do windows no mapa da mensagem de outro objeto.

CDynamicChain::RemoveChainEntry

Remover uma entrada de mapa de mensagem de coleção.

CDynamicChain::SetChainEntry

Adiciona uma entrada de mapa de mensagem à coleção ou modificar uma entrada existente.

Comentários

CDynamicChain gerencia uma coleção de mapas de mensagem, permitindo uma mensagem do windows a ser direcionada, em tempo de execução, no mapa da mensagem de outro objeto.

Para adicionar suporte para encadear dinâmica de mapas de mensagem, faça o seguinte:

  • Derivado da classe de CDynamicChain.Em o mapa de mensagem, especifique a macro de CHAIN_MSG_MAP_DYNAMIC encadear ao mapa padrão da mensagem de outro objeto.

  • Cada classe derivada que você deseja encadeamento de CMessageMap.CMessageMap permite que um objeto expõe seus mapeamentos de mensagem para outros objetos.

  • Chame CDynamicChain::SetChainEntry para identificar ao objeto e que o mapa de mensagem que você deseja encadear.

Por exemplo, suponha que sua classe é definida como segue:

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 chama em CMyWindow::SetChainEntry:

myCtl.SetChainEntry(1313, &chainedObj);

chainedObj onde é o objeto encadeado e é uma instância de uma classe derivada de CMessageMap.Agora, se myCtl recebe uma mensagem que não seja tratada por OnPaint ou por OnSetFocus, o procedimento de janela direciona a mensagem para o mapeamento padrão da mensagem de chainedObj.

Para obter mais informações sobre o mapa de mensagem que encadea, consulte Mapas de mensagem no artigo “classes de janela ATL”.

Requisitos

Cabeçalho: atlwin.h

Consulte também

Referência

Classe de CWindowImpl

Outros recursos

Visão geral da classe de ATL