Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Esta classe fornece métodos que suportam a encadeamento dinâmico de mapas de mensagens.
Importante
Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.
Sintaxe
class CDynamicChain
Membros
Construtores Públicos
| Nome | Description |
|---|---|
| CDynamicChain::CDynamicChain | O construtor. |
| CDynamicChain::~CDynamicChain | O destruidor. |
Métodos Públicos
| Nome | Description |
|---|---|
| CDynamicChain::CallChain | Direciona uma mensagem do Windows para o mapa de mensagens de outro objeto. |
| CDynamicChain::RemoveChainEntry | Remove uma entrada de mapa de mensagem da coleção. |
| CDynamicChain::SetChainEntry | Adiciona uma entrada de mapa de mensagem à coleção ou modifica uma entrada existente. |
Observações
CDynamicChain gere uma coleção de mapas de mensagens, permitindo que uma mensagem do Windows seja direcionada, em tempo de execução, para o mapa de mensagens de outro objeto.
Para adicionar suporte para encadeamento dinâmico de mapas de mensagens, faça o seguinte:
Derive sua classe de
CDynamicChain. No mapa de mensagens, especifique o macro CHAIN_MSG_MAP_DYNAMIC a encadear ao mapa de mensagens padrão de outro objeto.Deriva todas as classes para as quais queres encadear a partir do CMessageMap.
CMessageMappermite que um objeto expõe os seus mapas de mensagem a outros objetos.Chamada
CDynamicChain::SetChainEntrypara identificar a que objeto e que mapa de mensagens queres encadear.
Por exemplo, suponha que a 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 chama CMyWindow::SetChainEntryentão :
myCtl.SetChainEntry(1313, &chainedObj);
onde chainedObj é o objeto encadeado e é uma instância de uma classe derivada de CMessageMap. Agora, se myCtl receber uma mensagem que não é tratada por OnPaint ou OnSetFocus, o procedimento janela direciona a mensagem para chainedObjo mapa de mensagens predefinido de .
Para mais informações sobre encadeamento de mapas de mensagens, consulte Mapas de Mensagens no artigo "Classes de Janelas ATL."
Requerimentos
Cabeçalho: atlwin.h
CDynamicChain::CallChain
Direciona a mensagem do Windows para o mapa de mensagens de outro objeto.
BOOL CallChain(
DWORD dwChainID,
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
LRESULT& lResult);
Parâmetros
dwChainID
[dentro] O identificador único associado ao objeto encadeado e ao seu mapa de mensagens.
hWnd
[dentro] A maçaneta da janela que recebia a mensagem.
uMsg
[dentro] A mensagem enviada para a janela.
wParam
[dentro] Informação adicional específica da mensagem.
lParam
[dentro] Informação adicional específica da mensagem.
Resultado
[fora] O resultado do processamento de mensagens.
Valor de retorno
TRUE se a mensagem estiver totalmente processada; caso contrário, FALSO.
Observações
Para que o procedimento de janela invoque CallChain, deve especificar a macro CHAIN_MSG_MAP_DYNAMIC no seu mapa de mensagens. Para um exemplo, veja a visão geral do CDynamicChain .
CallChain requer uma chamada anterior ao SetChainEntry para associar o valor dwChainID a um objeto e ao seu mapa de mensagens.
CDynamicChain::CDynamicChain
O construtor.
CDynamicChain();
CDynamicChain::~CDynamicChain
O destruidor.
~CDynamicChain();
Observações
Liberta todos os recursos alocados.
CDynamicChain::RemoveChainEntry
Remove o mapa de mensagens especificado da coleção.
BOOL RemoveChainEntry(DWORD dwChainID);
Parâmetros
dwChainID
[dentro] O identificador único associado ao objeto encadeado e ao seu mapa de mensagens. Originalmente, define este valor através de uma chamada ao SetChainEntry.
Valor de retorno
TRUE se o mapa de mensagens for removido com sucesso da coleção. Caso contrário, é FALSE.
CDynamicChain::SetChainEntry
Adiciona o mapa de mensagens especificado à coleção.
BOOL SetChainEntry(
DWORD dwChainID,
CMessageMap* pObject,
DWORD dwMsgMapID = 0);
Parâmetros
dwChainID
[dentro] O identificador único associado ao objeto encadeado e ao seu mapa de mensagens.
pObject
[dentro] Um apontador para o objeto encadeado que declara o mapa da mensagem. Este objeto deve derivar do CMessageMap.
dwMsgMapID
[dentro] O identificador do mapa da mensagem no objeto encadeado. O valor predefinido é 0, que identifica o mapa de mensagens por defeito declarado com BEGIN_MSG_MAP. Para especificar um mapa de mensagem alternativo declarado com ALT_MSG_MAP(msgMapID), passe msgMapID.
Valor de retorno
TRUE se o mapa de mensagens for adicionado com sucesso à coleção. Caso contrário, é FALSE.
Observações
Se o valor dwChainID já existir na coleção, o seu objeto associado e o mapa de mensagens são substituídos por pObject e dwMsgMapID, respetivamente. Caso contrário, é adicionada uma nova entrada.
Consulte também
Classe CWindowImpl
Visão geral da classe