Classe de CDynamicChain
Essa classe fornece métodos que suportam encadeamento dinâmica de mapas de mensagem.
Importante |
---|
Essa classe e seus membros não podem ser usados em aplicativos executados em tempo de execução do windows. |
class CDynamicChain
Membros
Construtores public
Nome |
Descrição |
---|---|
o construtor. |
|
O destrutor. |
Métodos públicos
Nome |
Descrição |
---|---|
Direciona uma mensagem do windows no mapa da mensagem de outro objeto. |
|
Remover uma entrada de mapa de mensagem de coleção. |
|
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