Macros de mapa de mensagem (ATL)
Essas macros definem mapas de mensagens e entradas.
Nome | Descrição |
---|---|
ALT_MSG_MAP | Marca o início de um mapa de mensagens alternativo. |
BEGIN_MSG_MAP | Marca o início do mapa de mensagens padrão. |
CHAIN_MSG_MAP_ALT | Encadeia um mapa de mensagens alternativo na classe base. |
CHAIN_MSG_MAP_ALT_MEMBER | Encadeia um mapa de mensagens alternativo em um membro de dados da classe. |
CHAIN_MSG_MAP | Encadeia o mapa de mensagens padrão na classe base. |
CHAIN_MSG_MAP_DYNAMIC | Encadeia o mapa de mensagens em outra classe em tempo de execução. |
CHAIN_MSG_MAP_MEMBER | Encadeia o mapa de mensagens padrão em um membro de dados da classe. |
COMMAND_CODE_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função de manipulador, com base no código de notificação. |
COMMAND_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função de manipulador, com base no código de notificação e no identificador do item de menu, controle ou acelerador. |
COMMAND_ID_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função de manipulador, com base no identificador do item de menu, controle ou acelerador. |
COMMAND_RANGE_CODE_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função de manipulador, com base no código de notificação e em um intervalo contíguo de identificadores de controle. |
COMMAND_RANGE_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função de manipulador, com base em um intervalo contíguo de identificadores de controle. |
DECLARE_EMPTY_MSG_MAP | Implementa um mapa de mensagens vazio. |
DEFAULT_REFLECTION_HANDLER | Fornece um manipulador padrão para mensagens refletidas que não são tratadas de outra forma. |
END_MSG_MAP | Marca o final de um mapa de mensagem. |
FORWARD_NOTIFICATIONS | Encaminha mensagens de notificação para a janela pai. |
MESSAGE_HANDLER | Mapeia uma mensagem do Windows para uma função de manipulador. |
MESSAGE_RANGE_HANDLER | Mapeia um intervalo contíguo de mensagens do Windows para uma função de manipulador. |
NOTIFY_CODE_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função de manipulador, com base no código de notificação. |
NOTIFY_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função de manipulador, com base no código de notificação e no identificador de controle. |
NOTIFY_ID_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função de manipulador, com base no identificador de controle. |
NOTIFY_RANGE_CODE_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função de manipulador, com base no código de notificação e em um intervalo contíguo de identificadores de controle. |
NOTIFY_RANGE_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função de manipulador, com base em um intervalo contíguo de identificadores de controle. |
REFLECT_NOTIFICATIONS | Reflete as mensagens de notificação de volta à janela que as enviou. |
REFLECTED_COMMAND_CODE_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função de manipulador, com base no código de notificação. |
REFLECTED_COMMAND_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função de manipulador, com base no código de notificação e no identificador do item de menu, controle ou acelerador. |
REFLECTED_COMMAND_ID_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função de manipulador, com base no identificador do item de menu, controle ou acelerador. |
REFLECTED_COMMAND_RANGE_CODE_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função de manipulador, com base no código de notificação e em um intervalo contíguo de identificadores de controle. |
REFLECTED_COMMAND_RANGE_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função de manipulador, com base em um intervalo contíguo de identificadores de controle. |
REFLECTED_NOTIFY_CODE_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função de manipulador, com base no código de notificação. |
REFLECTED_NOTIFY_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função de manipulador, com base no código de notificação e no identificador de controle. |
REFLECTED_NOTIFY_ID_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função de manipulador, com base no identificador de controle. |
REFLECTED_NOTIFY_RANGE_CODE_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função de manipulador, com base no código de notificação e em um intervalo contíguo de identificadores de controle. |
REFLECTED_NOTIFY_RANGE_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função de manipulador, com base em um intervalo contíguo de identificadores de controle. |
Requisitos
Cabeçalho: atlwin.h
ALT_MSG_MAP
Marca o início de um mapa de mensagens alternativo.
ALT_MSG_MAP(msgMapID)
Parâmetros
msgMapID
[in] O identificador do mapa de mensagem.
Comentários
A ATL identifica cada mapa de mensagens por um número. O mapa de mensagens padrão (declarado com a macro BEGIN_MSG_MAP) é identificado por 0. Um mapa de mensagens alternativo é identificado por msgMapID.
Mapas de mensagens são usados para processar mensagens enviadas para uma janela. Por exemplo, CContainedWindow permite especificar o identificador de um mapa de mensagem no objeto que contém. CContainedWindow::WindowProc usa esse mapa de mensagens para direcionar as mensagens da janela contida para a função de manipulador apropriada ou para outro mapa de mensagem. Para obter uma lista de macros que declaram funções de manipulador, consulte BEGIN_MSG_MAP.
Sempre comece um mapa de mensagens com BEGIN_MSG_MAP. Em seguida, você pode declarar mapas de mensagens alternativos subsequentes.
A macro END_MSG_MAP marca o final do mapa da mensagem. Observe que há sempre exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para obter mais informações sobre como usar mapas de mensagens na ATL, consulte Mapas de Mensagens.
Exemplo
O exemplo a seguir mostra o mapa de mensagens padrão e um mapa de mensagem alternativo, cada um contendo uma função de manipulador:
BEGIN_MSG_MAP(CMyOneAltClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()
O exemplo a seguir mostra dois mapas de mensagens alternativos. O mapa de mensagem padrão está vazio.
BEGIN_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()
Requisitos
Cabeçalho: atlwin.h
BEGIN_MSG_MAP
Marca o início do mapa de mensagens padrão.
BEGIN_MSG_MAP(theClass)
Parâmetros
theClass
[in] O nome da classe que contém o mapa da mensagem.
Comentários
CWindowImpl::WindowProc usa o mapa de mensagem padrão para processar mensagens enviadas para a janela. O mapa da mensagem direciona as mensagens para a função de manipulador apropriada ou para outro mapa de mensagens.
As macros a seguir mapeiam uma mensagem para uma função de manipulador. Essa função deve ser definida no TheClass.
Macro | Descrição |
---|---|
MESSAGE_HANDLER | Mapeia uma mensagem do Windows para uma função de manipulador. |
MESSAGE_RANGE_HANDLER | Mapeia um intervalo contíguo de mensagens do Windows para uma função de manipulador. |
COMMAND_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função de manipulador, com base no código de notificação e no identificador do item de menu, controle ou acelerador. |
COMMAND_ID_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função de manipulador, com base no identificador do item de menu, controle ou acelerador. |
COMMAND_CODE_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função de manipulador, com base no código de notificação. |
COMMAND_RANGE_HANDLER | Mapeia um intervalo contíguo de mensagens WM_COMMAND para uma função de manipulador, com base no identificador do item de menu, controle ou acelerador. |
NOTIFY_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função de manipulador, com base no código de notificação e no identificador de controle. |
NOTIFY_ID_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função de manipulador, com base no identificador de controle. |
NOTIFY_CODE_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função de manipulador, com base no código de notificação. |
NOTIFY_RANGE_HANDLER | Mapeia um intervalo contíguo de mensagens WM_NOTIFY para uma função de manipulador, com base no identificador de controle. |
As macros a seguir direcionam mensagens para outro mapa de mensagens. Esse processo é chamado de "encadeamento".
Macro | Descrição |
---|---|
CHAIN_MSG_MAP | Encadeia o mapa de mensagens padrão na classe base. |
CHAIN_MSG_MAP_MEMBER | Encadeia o mapa de mensagens padrão em um membro de dados da classe. |
CHAIN_MSG_MAP_ALT | Encadeia um mapa de mensagens alternativo na classe base. |
CHAIN_MSG_MAP_ALT_MEMBER | Encadeia um mapa de mensagens alternativo em um membro de dados da classe. |
CHAIN_MSG_MAP_DYNAMIC | Encadeia o mapa de mensagens padrão em outra classe em tempo de execução. |
As macros a seguir direcionam mensagens "refletidas" da janela pai. Por exemplo, um controle normalmente envia mensagens de notificação para sua janela pai para processamento, mas a janela pai pode refletir a mensagem de volta ao controle.
Macro | Descrição |
---|---|
REFLECTED_COMMAND_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função de manipulador, com base no código de notificação e no identificador do item de menu, controle ou acelerador. |
REFLECTED_COMMAND_ID_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função de manipulador, com base no identificador do item de menu, controle ou acelerador. |
REFLECTED_COMMAND_CODE_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função de manipulador, com base no código de notificação. |
REFLECTED_COMMAND_RANGE_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função de manipulador, com base em um intervalo contíguo de identificadores de controle. |
REFLECTED_COMMAND_RANGE_CODE_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função de manipulador, com base no código de notificação e em um intervalo contíguo de identificadores de controle. |
REFLECTED_NOTIFY_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função de manipulador, com base no código de notificação e no identificador de controle. |
REFLECTED_NOTIFY_ID_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função de manipulador, com base no identificador de controle. |
REFLECTED_NOTIFY_CODE_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função de manipulador, com base no código de notificação. |
REFLECTED_NOTIFY_RANGE_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função de manipulador, com base em um intervalo contíguo de identificadores de controle. |
REFLECTED_NOTIFY_RANGE_CODE_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função de manipulador, com base no código de notificação e em um intervalo contíguo de identificadores de controle. |
Exemplo
class CMyExtWindow : public CMyBaseWindow
{
public:
BEGIN_MSG_MAP(CMyExtWindow)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
CHAIN_MSG_MAP(CMyBaseWindow)
END_MSG_MAP()
LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
LRESULT OnSetFocus(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
Quando um objeto CMyExtWindow
recebe uma mensagem WM_PAINT, a mensagem é direcionada para CMyExtWindow::OnPaint
para o processamento real. Se OnPaint
indicar que a mensagem requer processamento adicional, a mensagem será direcionada para o mapa de mensagens padrão em CMyBaseWindow
.
Além do mapa de mensagens padrão, você pode definir um mapa de mensagens alternativo com ALT_MSG_MAP. Sempre comece um mapa de mensagens com BEGIN_MSG_MAP. Em seguida, você pode declarar mapas de mensagens alternativos subsequentes. O exemplo a seguir mostra o mapa de mensagens padrão e um mapa de mensagem alternativo, cada um contendo uma função de manipulador:
BEGIN_MSG_MAP(CMyOneAltClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()
O exemplo a seguir mostra dois mapas de mensagens alternativos. O mapa de mensagem padrão está vazio.
BEGIN_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()
A macro END_MSG_MAP marca o final do mapa da mensagem. Observe que há sempre exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para obter mais informações sobre como usar mapas de mensagens na ATL, consulte Mapas de Mensagens.
Requisitos
Cabeçalho: atlwin.h
CHAIN_MSG_MAP_ALT
Define uma entrada em um mapa de mensagens.
CHAIN_MSG_MAP_ALT(theChainClass, msgMapID)
Parâmetros
theChainClass
[in] O nome da classe base que contém o mapa da mensagem.
msgMapID
[in] O identificador do mapa de mensagem.
Comentários
CHAIN_MSG_MAP_ALT direciona mensagens para um mapa de mensagem alternativo em uma classe base. Você deve ter declarado esse mapa de mensagens alternativo com ALT_MSG_MAP(msgMapID). Para direcionar mensagens para o mapa de mensagens padrão de uma classe base (declarado com BEGIN_MSG_MAP), use CHAIN_MSG_MAP. Para ver um exemplo, consulte CHAIN_MSG_MAP.
Observação
Sempre comece um mapa de mensagens com BEGIN_MSG_MAP. Em seguida, você pode declarar mapas de mensagens alternativas subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o final do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para obter mais informações sobre como usar mapas de mensagens na ATL, consulte Mapas de Mensagens.
Requisitos
Cabeçalho: atlwin.h
CHAIN_MSG_MAP_ALT_MEMBER
Define uma entrada em um mapa de mensagens.
CHAIN_MSG_MAP_ALT_MEMBER(theChainMember, msgMapID)
Parâmetros
theChainMember
[in] O nome do membro de dados que contém o mapa da mensagem.
msgMapID
[in] O identificador do mapa de mensagem.
Comentários
CHAIN_MSG_MAP_ALT_MEMBER direciona mensagens para um mapa de mensagem alternativo em um membro de dados. Você deve ter declarado esse mapa de mensagens alternativo com ALT_MSG_MAP(msgMapID). Para direcionar mensagens para o mapa de mensagens padrão de um membro de dados (declarado com BEGIN_MSG_MAP), use CHAIN_MSG_MAP_MEMBER. Para ver um exemplo, consulte CHAIN_MSG_MAP_MEMBER.
Observação
Sempre comece um mapa de mensagens com BEGIN_MSG_MAP. Em seguida, você pode declarar mapas de mensagens alternativas subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o final do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para obter mais informações sobre como usar mapas de mensagens na ATL, consulte Mapas de Mensagens.
Requisitos
Cabeçalho: atlwin.h
CHAIN_MSG_MAP
Define uma entrada em um mapa de mensagens.
CHAIN_MSG_MAP(theChainClass)
Parâmetros
theChainClass
[in] O nome da classe base que contém o mapa da mensagem.
Comentários
CHAIN_MSG_MAP direciona mensagens para o mapa de mensagens padrão de uma classe base (declarado com BEGIN_MSG_MAP). Para direcionar mensagens para o mapa de mensagens alternativo de uma classe base (declarado com ALT_MSG_MAP), use CHAIN_MSG_MAP_ALT.
Observação
Sempre comece um mapa de mensagens com BEGIN_MSG_MAP. Em seguida, você pode declarar mapas de mensagens alternativas subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o final do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para obter mais informações sobre como usar mapas de mensagens na ATL, consulte Mapas de Mensagens.
Exemplo
class CMyExtClass : public CMyBaseClass
{
public:
BEGIN_MSG_MAP(CMyExtClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
// chain to default message map in CMyBaseClass
CHAIN_MSG_MAP(CMyBaseClass)
ALT_MSG_MAP(1)
// chain to first alternative message map in CMyBaseClass
CHAIN_MSG_MAP(CMyBaseClass)
ALT_MSG_MAP(2)
MESSAGE_HANDLER(WM_CHAR, OnChar)
// chain to alternate message map in CMyBaseClass
CHAIN_MSG_MAP_ALT(CMyBaseClass, 1)
END_MSG_MAP()
LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
LRESULT OnChar(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
Este exemplo ilustra o seguinte:
Se um procedimento de janela estiver usando o mapa de mensagens padrão de
CMyClass
eOnPaint
não manipular uma mensagem, a mensagem será direcionada para o mapa de mensagens padrão deCMyBaseClass
para processamento.Se um procedimento de janela estiver usando o primeiro mapa de mensagens alternativo em
CMyClass
, todas as mensagens serão direcionadas para o mapa de mensagens padrão deCMyBaseClass
.Se um procedimento de janela estiver usando o segundo mapa de mensagens de
CMyClass
alternativo eOnChar
não manipular uma mensagem, a mensagem será direcionada para o mapa de mensagens alternativo especificado emCMyBaseClass
.CMyBaseClass
deve ter declarado este mapa de mensagens com ALT_MSG_MAP(1).
Requisitos
Cabeçalho: atlwin.h
CHAIN_MSG_MAP_DYNAMIC
Define uma entrada em um mapa de mensagens.
CHAIN_MSG_MAP_DYNAMIC(dynaChainID)
Parâmetros
dynaChainID
[in] O identificador exclusivo do mapa de mensagens de um objeto.
Comentários
CHAIN_MSG_MAP_DYNAMIC direciona mensagens, em tempo de execução, para o mapa de mensagem padrão em outro objeto. O objeto e seu mapa de mensagem estão associados a dynaChainID, que você define por meio de CDynamicChain::SetChainEntry. Você deve derivar sua classe de CDynamicChain
para usar CHAIN_MSG_MAP_DYNAMIC. Para obter um exemplo, confira a visão geral de CDynamicChain.
Observação
Sempre comece um mapa de mensagens com BEGIN_MSG_MAP. Em seguida, você pode declarar mapas de mensagens alternativas subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o final do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para obter mais informações sobre como usar mapas de mensagens na ATL, consulte Mapas de Mensagens.
Requisitos
Cabeçalho: atlwin.h
CHAIN_MSG_MAP_MEMBER
Define uma entrada em um mapa de mensagens.
CHAIN_MSG_MAP_MEMBER(theChainMember)
Parâmetros
theChainMember
[in] O nome do membro de dados que contém o mapa da mensagem.
Comentários
CHAIN_MSG_MAP_MEMBER direciona mensagens para o mapa de mensagens padrão de um membro de dados (declarado com BEGIN_MSG_MAP). Para direcionar mensagens para o mapa de mensagens alternativo de um membro de dados (declarado com ALT_MSG_MAP), use CHAIN_MSG_MAP_ALT.
Observação
Sempre comece um mapa de mensagens com BEGIN_MSG_MAP. Em seguida, você pode declarar mapas de mensagens alternativas subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o final do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para obter mais informações sobre como usar mapas de mensagens na ATL, consulte Mapas de Mensagens.
Exemplo
class CMyContainerClass : public CWindowImpl<CMyContainerClass>
{
public:
CMyContainedClass m_obj;
BEGIN_MSG_MAP(CMyContainerClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
// chain to default message map of m_obj
CHAIN_MSG_MAP_MEMBER(m_obj)
ALT_MSG_MAP(1)
// chain to default message map of m_obj
CHAIN_MSG_MAP_MEMBER(m_obj)
ALT_MSG_MAP(2)
MESSAGE_HANDLER(WM_CHAR, OnChar)
// chain to alternate message map of m_obj
CHAIN_MSG_MAP_ALT_MEMBER(m_obj, 1)
END_MSG_MAP()
LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
LRESULT OnChar(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
Este exemplo ilustra o seguinte:
Se um procedimento de janela estiver usando o mapa de mensagens padrão de
CMyClass
eOnPaint
não manipular uma mensagem, a mensagem será direcionada para o mapa de mensagens padrão dem_obj
para processamento.Se um procedimento de janela estiver usando o primeiro mapa de mensagens alternativo em
CMyClass
, todas as mensagens serão direcionadas para o mapa de mensagens padrão dem_obj
.Se um procedimento de janela estiver usando o segundo mapa de mensagens de
CMyClass
alternativo eOnChar
não manipular uma mensagem, a mensagem será direcionada para o mapa de mensagens alternativo especificado dem_obj
. A classeCMyContainedClass
deve ter declarado este mapa de mensagens com ALT_MSG_MAP(1).
Requisitos
Cabeçalho: atlwin.h
COMMAND_CODE_HANDLER
Semelhante a COMMAND_HANDLER, mas mapeia uma mensagem WM_COMMAND com base apenas no código de notificação.
COMMAND_CODE_HANDLER(code, func)
Parâmetros
code
[in] O código de notificação.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
COMMAND_HANDLER
Define uma entrada em um mapa de mensagens.
COMMAND_HANDLER(id, code, func)
Parâmetros
id
[in] O identificador do item de menu, controle ou acelerador.
code
[in] O código de notificação.
func
[in] O nome da função de manipulador de mensagens.
Comentários
COMMAND_HANDLER mapeia uma mensagem WM_COMMAND para a função de manipulador especificada, com base no código de notificação e no identificador de controle. Por exemplo:
class ATL_NO_VTABLE CPolyProp :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CPolyProp, &CLSID_PolyProp>,
public IPropertyPageImpl<CPolyProp>,
public CDialogImpl<CPolyProp>
{
public:
BEGIN_COM_MAP(CPolyProp)
COM_INTERFACE_ENTRY(IPropertyPage)
END_COM_MAP()
BEGIN_MSG_MAP(CPolyProp)
COMMAND_HANDLER(IDC_SIDES, EN_CHANGE, OnEnChangeSides)
CHAIN_MSG_MAP(IPropertyPageImpl<CPolyProp>)
END_MSG_MAP()
// When a CPolyProp object receives a WM_COMMAND message identified
// by IDC_SIDES and EN_CHANGE, the message is directed to
// CPolyProp::OnEnChangeSides for the actual processing.
LRESULT OnEnChangeSides(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/,
BOOL& /*bHandled*/);
Qualquer função especificada em uma macro COMMAND_HANDLER deve ser definida da seguinte maneira:
LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
O mapa da mensagem define bHandled
como TRUE antes de CommandHandler
ser chamado. Se CommandHandler
não manipular totalmente a mensagem, ela deverá definir bHandled
como FALSE para indicar que a mensagem precisa de processamento adicional.
Observação
Sempre comece um mapa de mensagens com BEGIN_MSG_MAP. Em seguida, você pode declarar mapas de mensagens alternativas subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o final do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Além de COMMAND_HANDLER, você pode usar MESSAGE_HANDLER para mapear uma mensagem de WM_COMMAND sem considerar um identificador ou código. Nesse caso, MESSAGE_HANDLER(WM_COMMAND, OnHandlerFunction)
direcionará todas as mensagens WM_COMMAND para OnHandlerFunction
.
Para obter mais informações sobre como usar mapas de mensagens na ATL, consulte Mapas de Mensagens.
Requisitos
Cabeçalho: atlwin.h
COMMAND_ID_HANDLER
Semelhante a COMMAND_HANDLER, mas mapeia uma mensagem WM_COMMAND com base apenas no identificador do item de menu, controle ou acelerador.
COMMAND_ID_HANDLER(id, func)
Parâmetros
id
[in] O identificador do item de menu, controle ou acelerador que envia a mensagem.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
COMMAND_RANGE_CODE_HANDLER
Semelhante a COMMAND_RANGE_HANDLER, mas mapeia mensagens WM_COMMAND com um código de notificação específico de um intervalo de controles para uma única função de manipulador.
COMMAND_RANGE_CODE_HANDLER(idFirst, idLast, code, func)
Parâmetros
idFirst
[in] Marca o início de um intervalo contíguo de identificadores de controle.
idLast
[in] Marca o fim de um intervalo contíguo de identificadores de controle.
code
[in] O código de notificação.
func
[in] O nome da função de manipulador de mensagens.
Comentários
Esse intervalo é baseado no identificador do item de menu, controle ou acelerador que envia a mensagem.
Requisitos
Cabeçalho: atlwin.h
COMMAND_RANGE_HANDLER
Semelhante a COMMAND_HANDLER, mas mapeia mensagens WM_COMMAND de um intervalo de controles para uma única função de manipulador.
COMMAND_RANGE_HANDLER( idFirst, idLast, func)
Parâmetros
idFirst
[in] Marca o início de um intervalo contíguo de identificadores de controle.
idLast
[in] Marca o fim de um intervalo contíguo de identificadores de controle.
func
[in] O nome da função de manipulador de mensagens.
Comentários
Esse intervalo é baseado no identificador do item de menu, controle ou acelerador que envia a mensagem.
Requisitos
Cabeçalho: atlwin.h
DECLARE_EMPTY_MSG_MAP
Declara um mapa de mensagem vazio.
DECLARE_EMPTY_MSG_MAP()
Comentários
DECLARE_EMPTY_MSG_MAP é uma macro de conveniência que chama as macros BEGIN_MSG_MAP e END_MSG_MAP para criar um mapa de mensagens vazio:
BEGIN_MSG_MAP(CExample)
END_MSG_MAP()
DEFAULT_REFLECTION_HANDLER
Fornece um manipulador padrão para a janela filho (controle) que receberá mensagens refletidas; o manipulador passará corretamente mensagens sem tratamento para DefWindowProc
.
DEFAULT_REFLECTION_HANDLER()
Requisitos
Cabeçalho: atlwin.h
END_MSG_MAP
Marca o final de um mapa de mensagem.
END_MSG_MAP()
Comentários
Sempre use a macro BEGIN_MSG_MAP para marcar o início de um mapa de mensagens. Use ALT_MSG_MAP para declarar mapas de mensagens alternativos subsequentes.
Observe que há sempre exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para obter mais informações sobre como usar mapas de mensagens na ATL, consulte Mapas de Mensagens.
Exemplo
O exemplo a seguir mostra o mapa de mensagens padrão e um mapa de mensagem alternativo, cada um contendo uma função de manipulador:
BEGIN_MSG_MAP(CMyOneAltClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()
O exemplo a seguir mostra dois mapas de mensagens alternativos. O mapa de mensagem padrão está vazio.
BEGIN_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()
Requisitos
Cabeçalho: atlwin.h
FORWARD_NOTIFICATIONS
Encaminha mensagens de notificação para a janela pai.
FORWARD_NOTIFICATIONS()
Comentários
Especifique essa macro como parte do mapa da mensagem.
Requisitos
Cabeçalho: atlwin.h
MESSAGE_HANDLER
Define uma entrada em um mapa de mensagens.
MESSAGE_HANDLER( msg, func )
Parâmetros
msg
[in] A mensagem do Windows.
func
[in] O nome da função de manipulador de mensagens.
Comentários
MESSAGE_HANDLER mapeia uma mensagem do Windows para a função de manipulador especificada.
Qualquer função especificada em uma macro MESSAGE_HANDLER deve ser definida da seguinte maneira:
LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
O mapa da mensagem define bHandled
como TRUE antes de MessageHandler
ser chamado. Se MessageHandler
não manipular totalmente a mensagem, ela deverá definir bHandled
como FALSE para indicar que a mensagem precisa de processamento adicional.
Observação
Sempre comece um mapa de mensagens com BEGIN_MSG_MAP. Em seguida, você pode declarar mapas de mensagens alternativas subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o final do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Além de MESSAGE_HANDLER, você pode usar COMMAND_HANDLER e NOTIFY_HANDLER para mapear mensagens WM_COMMAND e WM_NOTIFY, respectivamente.
Para obter mais informações sobre como usar mapas de mensagens na ATL, consulte Mapas de Mensagens.
Exemplo
class CMyBaseWindow : public CWindowImpl<CMyBaseWindow>
{
public:
BEGIN_MSG_MAP(CMyBaseWindow)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()
// When a CMyBaseWindow object receives a WM_CREATE message, the message
// is directed to CMyBaseWindow::OnCreate for the actual processing.
LRESULT OnCreate(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
Requisitos
Cabeçalho: atlwin.h
MESSAGE_RANGE_HANDLER
Semelhante a MESSAGE_HANDLER, mas mapeia um intervalo de mensagens do Windows para uma única função de manipulador.
MESSAGE_RANGE_HANDLER( msgFirst, msgLast, func )
Parâmetros
msgFirst
[in] Marca o início de um intervalo contíguo de mensagens.
msgLast
[in] Marca o fim de um intervalo contíguo de mensagens.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
NOTIFY_CODE_HANDLER
Semelhante a NOTIFY_HANDLER, mas mapeia uma mensagem WM_NOTIFY com base apenas no código de notificação.
NOTIFY_CODE_HANDLER(cd, func)
Parâmetros
cd
[in] O código de notificação.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
NOTIFY_HANDLER
Define uma entrada em um mapa de mensagens.
NOTIFY_HANDLER( id, cd, func )
Parâmetros
id
[in] O identificador do controle que envia a mensagem.
cd
[in] O código de notificação.
func
[in] O nome da função de manipulador de mensagens.
Comentários
NOTIFY_HANDLER mapeia uma mensagem WM_NOTIFY para a função de manipulador especificada, com base no código de notificação e no identificador de controle.
Qualquer função especificada em uma macro NOTIFY_HANDLER deve ser definida da seguinte maneira:
LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
O mapa da mensagem define bHandled
como TRUE antes de NotifyHandler
ser chamado. Se NotifyHandler
não manipular totalmente a mensagem, ela deverá definir bHandled
como FALSE para indicar que a mensagem precisa de processamento adicional.
Observação
Sempre comece um mapa de mensagens com BEGIN_MSG_MAP. Em seguida, você pode declarar mapas de mensagens alternativas subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o final do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Além de NOTIFY_HANDLER, você pode usar MESSAGE_HANDLER para mapear uma mensagem de WM_NOTIFY sem considerar um identificador ou código. Nesse caso, MESSAGE_HANDLER(WM_NOTIFY, OnHandlerFunction)
direcionará todas as mensagens WM_NOTIFY para OnHandlerFunction
.
Para obter mais informações sobre como usar mapas de mensagens na ATL, consulte Mapas de Mensagens.
Exemplo
class CMyDialog2 : public CDialogImpl<CMyDialog2>
{
public:
enum { IDD = IDD_MYDLG };
BEGIN_MSG_MAP(CMyDialog2)
NOTIFY_HANDLER(IDC_TREE1, NM_CLICK, OnNMClickTree1)
END_MSG_MAP()
public:
// When a CMyDialog2 object receives a WM_NOTIFY message
// identified by IDC_TREE1 and NM_CLICK, the message is
// directed to CMyDialog2::OnNMClickTree1 for the actual
// processing.
LRESULT OnNMClickTree1(int /*idCtrl*/, LPNMHDR pNMHDR, BOOL& /*bHandled*/);
};
Requisitos
Cabeçalho: atlwin.h
NOTIFY_ID_HANDLER
Semelhante a NOTIFY_HANDLER, mas mapeia uma mensagem WM_NOTIFY com base apenas no identificador de controle.
NOTIFY_ID_HANDLER( id, func )
Parâmetros
id
[in] O identificador do controle que envia a mensagem.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
NOTIFY_RANGE_CODE_HANDLER
Semelhante a NOTIFY_RANGE_HANDLER, mas mapeia mensagens WM_NOTIFY com um código de notificação específico de um intervalo de controles para uma única função de manipulador.
NOTIFY_RANGE_CODE_HANDLER( idFirst, idLast, cd, func )
Parâmetros
idFirst
[in] Marca o início de um intervalo contíguo de identificadores de controle.
idLast
[in] Marca o fim de um intervalo contíguo de identificadores de controle.
cd
[in] O código de notificação.
func
[in] O nome da função de manipulador de mensagens.
Comentários
Esse intervalo é baseado no identificador do controle que envia a mensagem.
Requisitos
Cabeçalho: atlwin.h
NOTIFY_RANGE_HANDLER
Semelhante a NOTIFY_HANDLER, mas mapeia mensagens WM_NOTIFY de um intervalo de controles para uma única função de manipulador.
NOTIFY_RANGE_HANDLER( idFirst, idLast, func )
Parâmetros
idFirst
[in] Marca o início de um intervalo contíguo de identificadores de controle.
idLast
[in] Marca o fim de um intervalo contíguo de identificadores de controle.
func
[in] O nome da função de manipulador de mensagens.
Comentários
Esse intervalo é baseado no identificador do controle que envia a mensagem.
Requisitos
Cabeçalho: atlwin.h
REFLECT_NOTIFICATIONS
Reflete as mensagens de notificação de volta para a janela filho (controle) que as enviou.
REFLECT_NOTIFICATIONS()
Comentários
Especifique essa macro como parte do mapa de mensagens da janela pai.
Requisitos
Cabeçalho: atlwin.h
REFLECTED_COMMAND_CODE_HANDLER
Semelhante a COMMAND_CODE_HANDLER, mas mapeia comandos refletidos da janela pai.
REFLECTED_COMMAND_CODE_HANDLER( code, func )
Parâmetros
code
[in] O código de notificação.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
REFLECTED_COMMAND_HANDLER
Semelhante a COMMAND_HANDLER, mas mapeia comandos refletidos da janela pai.
REFLECTED_COMMAND_HANDLER( id, code, func )
Parâmetros
id
[in] O identificador do item de menu, controle ou acelerador.
code
[in] O código de notificação.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
REFLECTED_COMMAND_ID_HANDLER
Semelhante a COMMAND_ID_HANDLER, mas mapeia comandos refletidos da janela pai.
REFLECTED_COMMAND_ID_HANDLER( id, func )
Parâmetros
id
[in] O identificador do item de menu, controle ou acelerador.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
REFLECTED_COMMAND_RANGE_CODE_HANDLER
Semelhante a COMMAND_RANGE_CODE_HANDLER, mas mapeia comandos refletidos da janela pai.
REFLECTED_COMMAND_RANGE_CODE_HANDLER( idFirst, idLast, code, func )
Parâmetros
idFirst
[in] Marca o início de um intervalo contíguo de identificadores de controle.
idLast
[in] Marca o fim de um intervalo contíguo de identificadores de controle.
code
[in] O código de notificação.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
REFLECTED_COMMAND_RANGE_HANDLER
Semelhante a COMMAND_RANGE_HANDLER, mas mapeia comandos refletidos da janela pai.
REFLECTED_COMMAND_RANGE_HANDLER( idFirst, idLast, func )
Parâmetros
idFirst
[in] Marca o início de um intervalo contíguo de identificadores de controle.
idLast
[in] Marca o fim de um intervalo contíguo de identificadores de controle.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
REFLECTED_NOTIFY_CODE_HANDLER
Semelhante a NOTIFY_CODE_HANDLER, mas mapeia as notificações refletidas da janela pai.
REFLECTED_NOTIFY_CODE_HANDLER_EX( cd, func )
Parâmetros
cd
[in] O código de notificação.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
REFLECTED_NOTIFY_HANDLER
Semelhante a NOTIFY_HANDLER, mas mapeia as notificações refletidas da janela pai.
REFLECTED_NOTIFY_HANDLER( id, cd, func )
Parâmetros
id
[in] O identificador do item de menu, controle ou acelerador.
cd
[in] O código de notificação.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
REFLECTED_NOTIFY_ID_HANDLER
Semelhante a NOTIFY_ID_HANDLER, mas mapeia as notificações refletidas da janela pai.
REFLECTED_NOTIFY_ID_HANDLER( id, func )
Parâmetros
id
[in] O identificador do item de menu, controle ou acelerador.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
REFLECTED_NOTIFY_RANGE_CODE_HANDLER
Semelhante a NOTIFY_RANGE_CODE_HANDLER, mas mapeia as notificações refletidas da janela pai.
REFLECTED_NOTIFY_RANGE_CODE_HANDLER( idFirst, idLast, cd, func )
Parâmetros
idFirst
[in] Marca o início de um intervalo contíguo de identificadores de controle.
idLast
[in] Marca o fim de um intervalo contíguo de identificadores de controle.
cd
[in] O código de notificação.
func
[in] O nome da função de manipulador de mensagens.
Requisitos
Cabeçalho: atlwin.h
REFLECTED_NOTIFY_RANGE_HANDLER
Semelhante a NOTIFY_RANGE_HANDLER, mas mapeia as notificações refletidas da janela pai.
REFLECTED_NOTIFY_RANGE_HANDLER( idFirst, idLast, func )
Parâmetros
idFirst
[in] Marca o início de um intervalo contíguo de identificadores de controle.
idLast
[in] Marca o fim de um intervalo contíguo de identificadores de controle.
func
[in] O nome da função de manipulador de mensagens.