classe CDynamicChain
CDynamicChain gerencia uma coleção de mapas de mensagem, permitindo que uma mensagem do Windows a ser dirigido, em tempo de execução, ao mapa da mensagem outro objeto.
Para adicionar suporte dinâmico encadeamento de mapas de mensagem, faça o seguinte:
Por exemplo, suponha que sua classe é definida da seguinte forma:
classe CMyWindow: CDynamicChain público,...
{
público:
nbsp; ...
BEGIN_MSG_MAP(CMyWindow)
MESSAGE_HANDLER (WM_PAINT, OnPaint)
MESSAGE_HANDLER (WM_SETFOCUS, OnSetFocus)
/ / dinamicamente cadeia para o padrão
/ / mensagem mapa em outro objeto
CHAIN_MSG_MAP_DYNAMIC(1313)
/ / '1313' identifica o objeto
/ / e o mapa da mensagem que será
/ / encadeada para. '1313' é definido
/ / através do método SetChainEntry
END_MSG_MAP()
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{ ... }
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{ ... }
};
Em seguida, chama o clienteCMyWindow::SetChainEntry
/ / myCtl é um objeto de CMyWindow
myCtl.SetCh&ainEntry (1313, amp; chainedObj);
onde chainedObj é o objeto encadeado e é uma instância de uma classe derivada CMessageMap. Agora, se myCtl recebe uma mensagem que não é tratada por OnPaint ou OnSetFocus , o procedimento janela dirige a mensagem a chainedObj do mapa da mensagem padrão.
Para obter mais informações sobre o mapa de mensagem encadeamento, consulte Mensagem mapas no artigo "Classes de janela do ATL".
# include lt;atlwin.h>
Co&nsulte tambémnbsp;CWindowImpl