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.
Estas macros definem mapas e entradas de mensagens.
| Nome | Description |
|---|---|
| ALT_MSG_MAP | Marca o início de um mapa alternativo de mensagens. |
| BEGIN_MSG_MAP | Marca o início do mapa de mensagens por defeito. |
| CHAIN_MSG_MAP_ALT | Chains para um mapa alternativo de mensagens na classe base. |
| CHAIN_MSG_MAP_ALT_MEMBER | Chains para uma mensagem alternativa mapeiam num membro de dados da classe. |
| CHAIN_MSG_MAP | Chains para o mapa de mensagens padrão na classe base. |
| CHAIN_MSG_MAP_DYNAMIC | Cadeias para a mensagem mapeiam noutra classe em tempo de execução. |
| CHAIN_MSG_MAP_MEMBER | Chains para a mensagem por defeito mapeiam num membro de dados da classe. |
| COMMAND_CODE_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função handler, com base no código de notificação. |
| COMMAND_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função handler, com base no código de notificação e no identificador do item do menu, controlo ou acelerador. |
| COMMAND_ID_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função handler, com base no identificador do item do menu, controlo ou acelerador. |
| COMMAND_RANGE_CODE_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função handler, com base no código de notificação e numa gama contígua de identificadores de controlo. |
| COMMAND_RANGE_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função handler, com base numa gama contígua de identificadores de controlo. |
| DECLARE_EMPTY_MSG_MAP | Implementa um mapa de mensagens vazio. |
| DEFAULT_REFLECTION_HANDLER | Fornece um manipulador predefinido para mensagens refletidas que não são tratadas de outra forma. |
| END_MSG_MAP | Marca o fim de um mapa de mensagens. |
| FORWARD_NOTIFICATIONS | Encaminha as mensagens de notificação para a janela principal. |
| MESSAGE_HANDLER | Mapeia uma mensagem do Windows para uma função handler. |
| MESSAGE_RANGE_HANDLER | Mapeia um intervalo contíguo de mensagens do Windows para uma função handler. |
| NOTIFY_CODE_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função handler, com base no código de notificação. |
| NOTIFY_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função handler, com base no código de notificação e no identificador de controlo. |
| NOTIFY_ID_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função handler, com base no identificador de controlo. |
| NOTIFY_RANGE_CODE_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função handler, com base no código de notificação e num intervalo contíguo de identificadores de controlo. |
| NOTIFY_RANGE_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função handler, com base numa gama contígua de identificadores de controlo. |
| REFLECT_NOTIFICATIONS | Reflete as mensagens de notificação de volta para a janela que as enviou. |
| REFLECTED_COMMAND_CODE_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função handler, com base no código de notificação. |
| REFLECTED_COMMAND_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função handler, com base no código de notificação e no identificador do item do menu, controlo ou acelerador. |
| REFLECTED_COMMAND_ID_HANDLER | Mapeia uma mensagem WM_COMMAND refletida para uma função handler, com base no identificador do item do menu, controlo ou acelerador. |
| REFLECTED_COMMAND_RANGE_CODE_HANDLER | Mapeia uma mensagem WM_COMMAND refletida para uma função handler, com base no código de notificação e numa gama contígua de identificadores de controlo. |
| REFLECTED_COMMAND_RANGE_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função handler, com base numa gama contígua de identificadores de controlo. |
| REFLECTED_NOTIFY_CODE_HANDLER | Mapeia uma mensagem WM_NOTIFY refletida para uma função handler, com base no código de notificação. |
| REFLECTED_NOTIFY_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função handler, com base no código de notificação e no identificador de controlo. |
| REFLECTED_NOTIFY_ID_HANDLER | Mapeia uma mensagem WM_NOTIFY refletida para uma função handler, com base no identificador de controlo. |
| REFLECTED_NOTIFY_RANGE_CODE_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função handler, com base no código de notificação e numa gama contígua de identificadores de controlo. |
| REFLECTED_NOTIFY_RANGE_HANDLER | Mapeia uma mensagem WM_NOTIFY refletida para uma função handler, com base numa gama contígua de identificadores de controlo. |
Requerimentos
Cabeçalho: atlwin.h
ALT_MSG_MAP
Marca o início de um mapa alternativo de mensagens.
ALT_MSG_MAP(msgMapID)
Parâmetros
msgMapID
[dentro] O identificador do mapa da mensagem.
Observações
O ATL identifica cada mapa de mensagens por um número. O mapa de mensagens por defeito (declarado com a BEGIN_MSG_MAP macro) é identificado por 0. Um mapa de mensagem alternativo é identificado por msgMapID.
Os mapas de mensagens são usados para processar mensagens enviadas para uma janela. Por exemplo, o CContainedWindow permite-lhe especificar o identificador de um mapa de mensagem no objeto que o contém. CContainedWindow::WindowProc usa então este mapa de mensagens para direcionar as mensagens da janela contida para a função handler apropriada ou para outro mapa de mensagens. Para uma lista de macros que declaram funções handler, veja BEGIN_MSG_MAP.
Comece sempre um mapa de mensagens com BEGIN_MSG_MAP. Pode então declarar mapas alternativos de mensagens subsequentes.
A macro END_MSG_MAP marca o fim do mapa da mensagem. Note que há sempre exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para mais informações sobre o uso de mapas de mensagens em ATL, consulte Mapas de Mensagens.
Example
O exemplo seguinte mostra o mapa de mensagens por defeito e um mapa alternativo, cada um contendo uma função handler:
BEGIN_MSG_MAP(CMyOneAltClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()
O exemplo seguinte mostra dois mapas de mensagens alternativos. O mapa de mensagens por defeito 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()
Requerimentos
Cabeçalho: atlwin.h
BEGIN_MSG_MAP
Marca o início do mapa de mensagens por defeito.
BEGIN_MSG_MAP(theClass)
Parâmetros
a Classe
[dentro] O nome da classe que contém o mapa da mensagem.
Observações
CWindowImpl::WindowProc usa o mapa de mensagens padrão para processar mensagens enviadas para a janela. O mapa de mensagens direciona as mensagens quer para a função handler apropriada, quer para outro mapa de mensagens.
As macros seguintes mapeiam uma mensagem para uma função handler. Esta função deve ser definida em theClass.
| Macro | Description |
|---|---|
| MESSAGE_HANDLER | Mapeia uma mensagem do Windows para uma função handler. |
| MESSAGE_RANGE_HANDLER | Mapeia um intervalo contíguo de mensagens do Windows para uma função handler. |
| COMMAND_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função handler, com base no código de notificação e no identificador do item do menu, controlo ou acelerador. |
| COMMAND_ID_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função handler, com base no identificador do item do menu, controlo ou acelerador. |
| COMMAND_CODE_HANDLER | Mapeia uma mensagem WM_COMMAND para uma função handler, com base no código de notificação. |
| COMMAND_RANGE_HANDLER | Mapeia um intervalo contíguo de mensagens de WM_COMMAND para uma função handler, com base no identificador do item do menu, controlo ou acelerador. |
| NOTIFY_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função handler, com base no código de notificação e no identificador de controlo. |
| NOTIFY_ID_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função handler, com base no identificador de controlo. |
| NOTIFY_CODE_HANDLER | Mapeia uma mensagem WM_NOTIFY para uma função handler, com base no código de notificação. |
| NOTIFY_RANGE_HANDLER | Mapeia um intervalo contíguo de mensagens de WM_NOTIFY para uma função handler, com base no identificador de controlo. |
Os macros seguintes direcionam as mensagens para outro mapa de mensagens. Este processo chama-se "encadeamento".
| Macro | Description |
|---|---|
| CHAIN_MSG_MAP | Chains para o mapa de mensagens padrão na classe base. |
| CHAIN_MSG_MAP_MEMBER | Chains para a mensagem por defeito mapeiam num membro de dados da classe. |
| CHAIN_MSG_MAP_ALT | Chains para um mapa alternativo de mensagens na classe base. |
| CHAIN_MSG_MAP_ALT_MEMBER | Chains para uma mensagem alternativa mapeiam num membro de dados da classe. |
| CHAIN_MSG_MAP_DYNAMIC | Chains para o mapa de mensagens padrão noutra classe em tempo de execução. |
As macros seguintes direcionam mensagens "refletidas" da janela principal. Por exemplo, um controlo normalmente envia mensagens de notificação para a sua janela mãe para processamento, mas a janela mãe pode refletir a mensagem de volta para o controlo.
| Macro | Description |
|---|---|
| REFLECTED_COMMAND_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função handler, com base no código de notificação e no identificador do item do menu, controlo ou acelerador. |
| REFLECTED_COMMAND_ID_HANDLER | Mapeia uma mensagem WM_COMMAND refletida para uma função handler, com base no identificador do item do menu, controlo ou acelerador. |
| REFLECTED_COMMAND_CODE_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função handler, com base no código de notificação. |
| REFLECTED_COMMAND_RANGE_HANDLER | Mapeia uma mensagem de WM_COMMAND refletida para uma função handler, com base numa gama contígua de identificadores de controlo. |
| REFLECTED_COMMAND_RANGE_CODE_HANDLER | Mapeia uma mensagem WM_COMMAND refletida para uma função handler, com base no código de notificação e numa gama contígua de identificadores de controlo. |
| REFLECTED_NOTIFY_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função handler, com base no código de notificação e no identificador de controlo. |
| REFLECTED_NOTIFY_ID_HANDLER | Mapeia uma mensagem WM_NOTIFY refletida para uma função handler, com base no identificador de controlo. |
| REFLECTED_NOTIFY_CODE_HANDLER | Mapeia uma mensagem WM_NOTIFY refletida para uma função handler, com base no código de notificação. |
| REFLECTED_NOTIFY_RANGE_HANDLER | Mapeia uma mensagem WM_NOTIFY refletida para uma função handler, com base numa gama contígua de identificadores de controlo. |
| REFLECTED_NOTIFY_RANGE_CODE_HANDLER | Mapeia uma mensagem de WM_NOTIFY refletida para uma função handler, com base no código de notificação e numa gama contígua de identificadores de controlo. |
Example
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 CMyExtWindow objeto recebe uma mensagem WM_PAINT, a mensagem é direcionada para CMyExtWindow::OnPaint o processamento propriamente dito. Se OnPaint indicar que a mensagem requer processamento adicional, a mensagem será então direcionada para o mapa de mensagens padrão em CMyBaseWindow.
Além do mapa de mensagens predefinido, pode definir um mapa de mensagens alternativo com ALT_MSG_MAP. Comece sempre um mapa de mensagens com BEGIN_MSG_MAP. Pode então declarar mapas alternativos de mensagens subsequentes. O exemplo seguinte mostra o mapa de mensagens por defeito e um mapa alternativo, cada um contendo uma função handler:
BEGIN_MSG_MAP(CMyOneAltClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()
O exemplo seguinte mostra dois mapas de mensagens alternativos. O mapa de mensagens por defeito 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 fim do mapa da mensagem. Note que há sempre exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para mais informações sobre o uso de mapas de mensagens em ATL, consulte Mapas de Mensagens.
Requerimentos
Cabeçalho: atlwin.h
CHAIN_MSG_MAP_ALT
Define uma entrada num mapa de mensagens.
CHAIN_MSG_MAP_ALT(theChainClass, msgMapID)
Parâmetros
theChainClass
[dentro] O nome da classe base que contém o mapa da mensagem.
msgMapID
[dentro] O identificador do mapa da mensagem.
Observações
CHAIN_MSG_MAP_ALT direciona mensagens para um mapa de mensagens alternativo numa classe base. Deves ter declarado este mapa alternativo de mensagens 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 um exemplo, veja CHAIN_MSG_MAP.
Observação
Comece sempre um mapa de mensagens com BEGIN_MSG_MAP. Pode então declarar mapas alternativos de mensagens subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o fim do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para mais informações sobre o uso de mapas de mensagens em ATL, consulte Mapas de Mensagens.
Requerimentos
Cabeçalho: atlwin.h
CHAIN_MSG_MAP_ALT_MEMBER
Define uma entrada num mapa de mensagens.
CHAIN_MSG_MAP_ALT_MEMBER(theChainMember, msgMapID)
Parâmetros
theChainMember
[dentro] O nome do elemento de dados que contém o mapa da mensagem.
msgMapID
[dentro] O identificador do mapa da mensagem.
Observações
CHAIN_MSG_MAP_ALT_MEMBER direciona mensagens para um mapa alternativo de mensagens num membro de dados. Deves ter declarado este mapa alternativo de mensagens com ALT_MSG_MAP(msgMapID). Para direcionar mensagens para o mapa de mensagens predefinido de um membro de dados (declarado com BEGIN_MSG_MAP), use CHAIN_MSG_MAP_MEMBER. Para um exemplo, veja CHAIN_MSG_MAP_MEMBER.
Observação
Comece sempre um mapa de mensagens com BEGIN_MSG_MAP. Pode então declarar mapas alternativos de mensagens subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o fim do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para mais informações sobre o uso de mapas de mensagens em ATL, consulte Mapas de Mensagens.
Requerimentos
Cabeçalho: atlwin.h
CHAIN_MSG_MAP
Define uma entrada num mapa de mensagens.
CHAIN_MSG_MAP(theChainClass)
Parâmetros
theChainClass
[dentro] O nome da classe base que contém o mapa da mensagem.
Observações
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 alternativo de mensagens de uma classe base (declarado com ALT_MSG_MAP), use CHAIN_MSG_MAP_ALT.
Observação
Comece sempre um mapa de mensagens com BEGIN_MSG_MAP. Pode então declarar mapas alternativos de mensagens subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o fim do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para mais informações sobre o uso de mapas de mensagens em ATL, consulte Mapas de Mensagens.
Example
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 a usar
CMyClasso mapa de mensagens por defeito eOnPaintnão tratar uma mensagem, a mensagem é direcionada paraCMyBaseClasso 'mapa de mensagens por defeito para processamento.Se um procedimento de janela estiver a usar o primeiro mapa de mensagens alternativo em
CMyClass, todas as mensagens são direcionadas paraCMyBaseClasso 'mapa de mensagens predefinido.Se um procedimento janela estiver a usar
CMyClasso segundo mapa alternativo de mensagens eOnCharnão tratar uma mensagem, a mensagem é direcionada para o mapa alternativo especificado emCMyBaseClass.CMyBaseClassdeve ter declarado este mapa de mensagens com ALT_MSG_MAP(1).
Requerimentos
Cabeçalho: atlwin.h
CHAIN_MSG_MAP_DYNAMIC
Define uma entrada num mapa de mensagens.
CHAIN_MSG_MAP_DYNAMIC(dynaChainID)
Parâmetros
dynaChainID
[dentro] O identificador único para o mapa de mensagens de um objeto.
Observações
CHAIN_MSG_MAP_DYNAMIC direciona as mensagens, em tempo de execução, para o mapa de mensagens predefinido noutro objeto. O objeto e o seu mapa de mensagens estão associados ao dynaChainID, que defines através do CDynamicChain::SetChainEntry. Tens de derivar a tua classe para CDynamicChain usares CHAIN_MSG_MAP_DYNAMIC. Para um exemplo, veja a visão geral do CDynamicChain .
Observação
Comece sempre um mapa de mensagens com BEGIN_MSG_MAP. Pode então declarar mapas alternativos de mensagens subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o fim do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para mais informações sobre o uso de mapas de mensagens em ATL, consulte Mapas de Mensagens.
Requerimentos
Cabeçalho: atlwin.h
CHAIN_MSG_MAP_MEMBER
Define uma entrada num mapa de mensagens.
CHAIN_MSG_MAP_MEMBER(theChainMember)
Parâmetros
theChainMember
[dentro] O nome do elemento de dados que contém o mapa da mensagem.
Observações
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 alternativo de mensagens de um membro de dados (declarado com ALT_MSG_MAP), use CHAIN_MSG_MAP_ALT_MEMBER.
Observação
Comece sempre um mapa de mensagens com BEGIN_MSG_MAP. Pode então declarar mapas alternativos de mensagens subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o fim do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para mais informações sobre o uso de mapas de mensagens em ATL, consulte Mapas de Mensagens.
Example
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 a usar
CMyClasso mapa de mensagens por defeito eOnPaintnão tratar uma mensagem, a mensagem é direcionada param_objo 'mapa de mensagens por defeito para processamento.Se um procedimento de janela estiver a usar o primeiro mapa de mensagens alternativo em
CMyClass, todas as mensagens são direcionadas param_objo 'mapa de mensagens predefinido.Se um procedimento de janela estiver a usar
CMyClasso segundo mapa alternativo de mensagens eOnCharnão tratar uma mensagem, a mensagem é direcionada para o mapa alternativo especificado dem_obj. A classeCMyContainedClassdeve ter declarado este mapa de mensagens com ALT_MSG_MAP(1).
Requerimentos
Cabeçalho: atlwin.h
COMMAND_CODE_HANDLER
Semelhante ao COMMAND_HANDLER, mas mapeia uma mensagem WM_COMMAND apenas com base no código de notificação.
COMMAND_CODE_HANDLER(code, func)
Parâmetros
código
[dentro] O código de notificação.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
COMMAND_HANDLER
Define uma entrada num mapa de mensagens.
COMMAND_HANDLER(id, code, func)
Parâmetros
ID
[dentro] O identificador do item do menu, controlo ou acelerador.
código
[dentro] O código de notificação.
func
[dentro] O nome da função handler de mensagens.
Observações
COMMAND_HANDLER mapeia uma mensagem WM_COMMAND para a função handler especificada, com base no código de notificação e no identificador de controlo. 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 numa COMMAND_HANDLER macro deve ser definida da seguinte forma:
LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
O mapa da mensagem define bHandled para TRUE antes de CommandHandler ser chamado. Se CommandHandler não tratar totalmente a mensagem, deve definir bHandled para FALSE para indicar que a mensagem necessita de processamento adicional.
Observação
Comece sempre um mapa de mensagens com BEGIN_MSG_MAP. Pode então declarar mapas alternativos de mensagens subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o fim 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, pode usar MESSAGE_HANDLER para mapear uma mensagem WM_COMMAND sem considerar um identificador ou código. Neste caso, MESSAGE_HANDLER(WM_COMMAND, OnHandlerFunction) irá direcionar todas as mensagens WM_COMMAND para OnHandlerFunction.
Para mais informações sobre o uso de mapas de mensagens em ATL, consulte Mapas de Mensagens.
Requerimentos
Cabeçalho: atlwin.h
COMMAND_ID_HANDLER
Semelhante ao COMMAND_HANDLER, mas mapeia uma mensagem WM_COMMAND apenas com base no identificador do item do menu, controlo ou acelerador.
COMMAND_ID_HANDLER(id, func)
Parâmetros
ID
[dentro] O identificador do item do menu, controlo ou acelerador que envia a mensagem.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
COMMAND_RANGE_CODE_HANDLER
Semelhante ao COMMAND_RANGE_HANDLER, mas mapeia WM_COMMAND mensagens com um código de notificação específico de uma variedade de controlos para uma única função handler.
COMMAND_RANGE_CODE_HANDLER(idFirst, idLast, code, func)
Parâmetros
idFirst
[dentro] Marca o início de uma gama contígua de identificadores de controlo.
idLast
[dentro] Marca o fim de um intervalo contíguo de identificadores de controlo.
código
[dentro] O código de notificação.
func
[dentro] O nome da função handler de mensagens.
Observações
Este intervalo baseia-se no identificador do item do menu, controlo ou acelerador que envia a mensagem.
Requerimentos
Cabeçalho: atlwin.h
COMMAND_RANGE_HANDLER
Semelhante ao COMMAND_HANDLER, mas mapeia WM_COMMAND mensagens de uma variedade de controlos para uma única função handler.
COMMAND_RANGE_HANDLER( idFirst, idLast, func)
Parâmetros
idFirst
[dentro] Marca o início de uma gama contígua de identificadores de controlo.
idLast
[dentro] Marca o fim de um intervalo contíguo de identificadores de controlo.
func
[dentro] O nome da função handler de mensagens.
Observações
Este intervalo baseia-se no identificador do item do menu, controlo ou acelerador que envia a mensagem.
Requerimentos
Cabeçalho: atlwin.h
DECLARE_EMPTY_MSG_MAP
Declara um mapa de mensagens vazio.
DECLARE_EMPTY_MSG_MAP()
Observações
DECLARE_EMPTY_MSG_MAP é uma macro de conveniência que chama os 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 handler predefinido para a janela filho (controlo) que receberá mensagens refletidas; O handler irá passar corretamente mensagens não tratadas para DefWindowProc.
DEFAULT_REFLECTION_HANDLER()
Requerimentos
Cabeçalho: atlwin.h
END_MSG_MAP
Marca o fim de um mapa de mensagens.
END_MSG_MAP()
Observações
Usa sempre a macro BEGIN_MSG_MAP para marcar o início de um mapa de mensagens. Use ALT_MSG_MAP para declarar mapas alternativos de mensagens subsequentes.
Note que há sempre exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para mais informações sobre o uso de mapas de mensagens em ATL, consulte Mapas de Mensagens.
Example
O exemplo seguinte mostra o mapa de mensagens por defeito e um mapa alternativo, cada um contendo uma função handler:
BEGIN_MSG_MAP(CMyOneAltClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()
O exemplo seguinte mostra dois mapas de mensagens alternativos. O mapa de mensagens por defeito 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()
Requerimentos
Cabeçalho: atlwin.h
FORWARD_NOTIFICATIONS
Encaminha as mensagens de notificação para a janela principal.
FORWARD_NOTIFICATIONS()
Observações
Especifique esta macro como parte do seu mapa de mensagens.
Requerimentos
Cabeçalho: atlwin.h
MESSAGE_HANDLER
Define uma entrada num mapa de mensagens.
MESSAGE_HANDLER( msg, func )
Parâmetros
msg
[dentro] A mensagem do Windows.
func
[dentro] O nome da função handler de mensagens.
Observações
MESSAGE_HANDLER mapeia uma mensagem do Windows para a função handler especificada.
Qualquer função especificada numa macro MESSAGE_HANDLER deve ser definida da seguinte forma:
LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
O mapa da mensagem define bHandled para TRUE antes de MessageHandler ser chamado. Se MessageHandler não tratar totalmente a mensagem, deve definir bHandled para FALSE para indicar que a mensagem necessita de processamento adicional.
Observação
Comece sempre um mapa de mensagens com BEGIN_MSG_MAP. Pode então declarar mapas alternativos de mensagens subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o fim do mapa da mensagem. Cada mapa de mensagens deve ter exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Além do MESSAGE_HANDLER, pode usar COMMAND_HANDLER e NOTIFY_HANDLER para mapear mensagens WM_COMMAND e WM_NOTIFY , respetivamente.
Para mais informações sobre o uso de mapas de mensagens em ATL, consulte Mapas de Mensagens.
Example
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;
}
};
Requerimentos
Cabeçalho: atlwin.h
MESSAGE_RANGE_HANDLER
Semelhante ao MESSAGE_HANDLER, mas mapeia uma série de mensagens do Windows para uma única função handler.
MESSAGE_RANGE_HANDLER( msgFirst, msgLast, func )
Parâmetros
msgFirst
[dentro] Marca o início de uma série contígua de mensagens.
msgLast
[dentro] Marca o fim de uma série contígua de mensagens.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
NOTIFY_CODE_HANDLER
Semelhante ao NOTIFY_HANDLER, mas mapeia uma mensagem WM_NOTIFY apenas com base no código de notificação.
NOTIFY_CODE_HANDLER(cd, func)
Parâmetros
cd
[dentro] O código de notificação.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
NOTIFY_HANDLER
Define uma entrada num mapa de mensagens.
NOTIFY_HANDLER( id, cd, func )
Parâmetros
ID
[dentro] O identificador do controlo que envia a mensagem.
cd
[dentro] O código de notificação.
func
[dentro] O nome da função handler de mensagens.
Observações
NOTIFY_HANDLER mapeia uma mensagem WM_NOTIFY para a função handler especificada, com base no código de notificação e no identificador de controlo.
Qualquer função especificada numa NOTIFY_HANDLER macro deve ser definida da seguinte forma:
LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
O mapa da mensagem define bHandled para TRUE antes de NotifyHandler ser chamado. Se NotifyHandler não tratar totalmente a mensagem, deve definir bHandled para FALSE para indicar que a mensagem necessita de processamento adicional.
Observação
Comece sempre um mapa de mensagens com BEGIN_MSG_MAP. Pode então declarar mapas alternativos de mensagens subsequentes com ALT_MSG_MAP. A macro END_MSG_MAP marca o fim 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, pode usar MESSAGE_HANDLER para mapear uma mensagem WM_NOTIFY sem considerar identificador ou código. Neste caso, MESSAGE_HANDLER(WM_NOTIFY, OnHandlerFunction) irá direcionar todas as mensagens WM_NOTIFY para OnHandlerFunction.
Para mais informações sobre o uso de mapas de mensagens em ATL, consulte Mapas de Mensagens.
Example
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*/);
};
Requerimentos
Cabeçalho: atlwin.h
NOTIFY_ID_HANDLER
Semelhante ao NOTIFY_HANDLER, mas mapeia uma mensagem WM_NOTIFY apenas com base no identificador de controlo.
NOTIFY_ID_HANDLER( id, func )
Parâmetros
ID
[dentro] O identificador do controlo que envia a mensagem.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
NOTIFY_RANGE_CODE_HANDLER
Semelhante ao NOTIFY_RANGE_HANDLER, mas mapeia mensagens WM_NOTIFY com um código de notificação específico de uma variedade de controlos para uma única função handler.
NOTIFY_RANGE_CODE_HANDLER( idFirst, idLast, cd, func )
Parâmetros
idFirst
[dentro] Marca o início de uma gama contígua de identificadores de controlo.
idLast
[dentro] Marca o fim de um intervalo contíguo de identificadores de controlo.
cd
[dentro] O código de notificação.
func
[dentro] O nome da função handler de mensagens.
Observações
Este intervalo baseia-se no identificador do controlo que envia a mensagem.
Requerimentos
Cabeçalho: atlwin.h
NOTIFY_RANGE_HANDLER
Semelhante ao NOTIFY_HANDLER, mas mapeia WM_NOTIFY mensagens de uma variedade de controlos para uma única função handler.
NOTIFY_RANGE_HANDLER( idFirst, idLast, func )
Parâmetros
idFirst
[dentro] Marca o início de uma gama contígua de identificadores de controlo.
idLast
[dentro] Marca o fim de um intervalo contíguo de identificadores de controlo.
func
[dentro] O nome da função handler de mensagens.
Observações
Este intervalo baseia-se no identificador do controlo que envia a mensagem.
Requerimentos
Cabeçalho: atlwin.h
REFLECT_NOTIFICATIONS
Reflete as mensagens de notificação de volta para a janela filho (controlo) que as enviou.
REFLECT_NOTIFICATIONS()
Observações
Especifique esta macro como parte do mapa de mensagens da janela pai.
Requerimentos
Cabeçalho: atlwin.h
REFLECTED_COMMAND_CODE_HANDLER
Semelhante ao COMMAND_CODE_HANDLER, mas mapeia comandos refletidos da janela principal.
REFLECTED_COMMAND_CODE_HANDLER( code, func )
Parâmetros
código
[dentro] O código de notificação.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
REFLECTED_COMMAND_HANDLER
Semelhante ao COMMAND_HANDLER, mas mapeia comandos refletidos da janela principal.
REFLECTED_COMMAND_HANDLER( id, code, func )
Parâmetros
ID
[dentro] O identificador do item do menu, controlo ou acelerador.
código
[dentro] O código de notificação.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
REFLECTED_COMMAND_ID_HANDLER
Semelhante ao COMMAND_ID_HANDLER, mas mapeia comandos refletidos da janela principal.
REFLECTED_COMMAND_ID_HANDLER( id, func )
Parâmetros
ID
[dentro] O identificador do item do menu, controlo ou acelerador.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
REFLECTED_COMMAND_RANGE_CODE_HANDLER
Semelhante ao COMMAND_RANGE_CODE_HANDLER, mas mapeia comandos refletidos da janela principal.
REFLECTED_COMMAND_RANGE_CODE_HANDLER( idFirst, idLast, code, func )
Parâmetros
idFirst
[dentro] Marca o início de uma gama contígua de identificadores de controlo.
idLast
[dentro] Marca o fim de um intervalo contíguo de identificadores de controlo.
código
[dentro] O código de notificação.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
REFLECTED_COMMAND_RANGE_HANDLER
Semelhante ao COMMAND_RANGE_HANDLER, mas mapeia comandos refletidos da janela principal.
REFLECTED_COMMAND_RANGE_HANDLER( idFirst, idLast, func )
Parâmetros
idFirst
[dentro] Marca o início de uma gama contígua de identificadores de controlo.
idLast
[dentro] Marca o fim de um intervalo contíguo de identificadores de controlo.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
REFLECTED_NOTIFY_CODE_HANDLER
Semelhante ao NOTIFY_CODE_HANDLER, mas mapeia notificações refletidas pela janela principal.
REFLECTED_NOTIFY_CODE_HANDLER_EX( cd, func )
Parâmetros
cd
[dentro] O código de notificação.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
REFLECTED_NOTIFY_HANDLER
Semelhante ao NOTIFY_HANDLER, mas com notificações de mapas refletidas pela janela principal.
REFLECTED_NOTIFY_HANDLER( id, cd, func )
Parâmetros
ID
[dentro] O identificador do item do menu, controlo ou acelerador.
cd
[dentro] O código de notificação.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
REFLECTED_NOTIFY_ID_HANDLER
Semelhante ao NOTIFY_ID_HANDLER, mas mapeia notificações refletidas pela janela principal.
REFLECTED_NOTIFY_ID_HANDLER( id, func )
Parâmetros
ID
[dentro] O identificador do item do menu, controlo ou acelerador.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
REFLECTED_NOTIFY_RANGE_CODE_HANDLER
Semelhante ao NOTIFY_RANGE_CODE_HANDLER, mas mapeia notificações refletidas pela janela principal.
REFLECTED_NOTIFY_RANGE_CODE_HANDLER( idFirst, idLast, cd, func )
Parâmetros
idFirst
[dentro] Marca o início de uma gama contígua de identificadores de controlo.
idLast
[dentro] Marca o fim de um intervalo contíguo de identificadores de controlo.
cd
[dentro] O código de notificação.
func
[dentro] O nome da função handler de mensagens.
Requerimentos
Cabeçalho: atlwin.h
REFLECTED_NOTIFY_RANGE_HANDLER
Semelhante ao NOTIFY_RANGE_HANDLER, mas mapeia notificações refletidas pela janela principal.
REFLECTED_NOTIFY_RANGE_HANDLER( idFirst, idLast, func )
Parâmetros
idFirst
[dentro] Marca o início de uma gama contígua de identificadores de controlo.
idLast
[dentro] Marca o fim de um intervalo contíguo de identificadores de controlo.
func
[dentro] O nome da função handler de mensagens.