Classe CMessageMap
Essa classe permite que os mapas de mensagens de um objeto sejam acessados por outro objeto.
Importante
Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.
Sintaxe
class ATL_NO_VTABLE CMessageMap
Membros
Métodos públicos
Nome | Descrição |
---|---|
CMessageMap::ProcessWindowMessage | Acessa um mapa de mensagens na classe derivada de CMessageMap . |
Comentários
CMessageMap
é uma classe base abstrata que permite que os mapas de mensagens de um objeto sejam acessados por outro objeto. Para que um objeto exponha os mapas de mensagens, a classe deverá derivar de CMessageMap
.
ATL usa CMessageMap
para dar suporte a janelas contidas e encadeamento dinâmico de mapa de mensagens. Por exemplo, todas as classes contendo um objeto CContainedWindow deverão derivar de CMessageMap
. O código a seguir é obtido do exemplo SUBEDIT. Por meio de CComControl, a classe CAtlEdit
deriva automaticamente de CMessageMap
.
class ATL_NO_VTABLE CAtlEdit :
OtherInheritedClasses
public CComControl<CAtlEdit>
// CComControl derives from CWindowImpl, which derives from CMessageMap
{
public:
// Declare a contained window data member
CContainedWindow m_ctlEdit;
// Initialize the contained window:
// 1. Pass "Edit" to specify that the contained
// window should be based on the standard
// Windows Edit box
// 2. Pass 'this' pointer to specify that CAtlEdit
// contains the message map to be used for the
// contained window's message processing
// 3. Pass the identifier of the message map. '1'
// identifies the alternate message map declared
// with ALT_MSG_MAP(1)
CAtlEdit()
: m_ctlEdit(_T("Edit"), this, 1)
{
m_bWindowOnly = TRUE;
}
// Declare the default message map, identified by '0'
BEGIN_MSG_MAP(CAtlEdit)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
CHAIN_MSG_MAP(CComControl<CAtlEdit>)
// Declare an alternate message map, identified by '1'
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_CHAR, OnChar)
END_MSG_MAP()
Como a janela contida, m_EditCtrl
, usará um mapa de mensagem na classe que contém, CAtlEdit
deriva de CMessageMap
.
Para obter mais informações sobre os mapas de mensagens, consulte Mapas de mensagens no artigo "Classes de janela de ATL."
Requisitos
Cabeçalho: atlwin.h
CMessageMap::ProcessWindowMessage
Acessa o mapa de mensagens identificado por dwMsgMapID em uma classe derivada de CMessageMap
.
virtual BOOL ProcessWindowMessage(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
LRESULT& lResult,
DWORD dwMsgMapID) = 0;
Parâmetros
hWnd
[in] O identificador para a janela que recebe a mensagem.
uMsg
[in] A mensagem enviada para a janela.
wParam
[in] Informações adicionais específicas de mensagem.
lParam
[in] Informações adicionais específicas de mensagem.
lResult
[out] O resultado do processamento de mensagem.
dwMsgMapID
[in] O identificador do mapa de mensagens que processará a mensagem. O mapa de mensagens padrão, declarado com BEGIN_MSG_MAP, é identificado por 0. Um mapa de mensagem alternativo, declarado com ALT_MSG_MAP(msgMapID), é identificado por msgMapID
.
Valor de retorno
TRUE se a mensagem for totalmente tratada, caso contrário, será FALSE.
Comentários
Chamado pelo procedimento de janela de um objeto CContainedWindow ou de um objeto que está encadeando dinamicamente ao mapa de mensagens.
Confira também
Classe CDynamicChain
BEGIN_MSG_MAP
ALT_MSG_MAP(msgMapID)
Visão geral da aula