Compartir a través de


Clase CMessageMap

Esta clase permite que los mapas de mensajes de un objeto tengan acceso a otros.

Importante

Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.

Sintaxis

class ATL_NO_VTABLE CMessageMap

Miembros

Métodos públicos

Nombre Descripción
CMessageMap::ProcessWindowMessage Obtiene acceso a un mapa de mensajes en la derivada de CMessageMap.

Comentarios

CMessageMap es una clase base abstracta que permite que otro objeto acceda a los mapas de mensajes de un objeto. Para que un objeto exponga el mapa de mensajes, la clase debe derivar de CMessageMap.

ATL usa CMessageMap para admitir ventanas independientes y encadenamiento dinámico de mapas de mensajes. Por ejemplo, cualquier clase que contenga un objeto CContainedWindow debe derivar de CMessageMap. El siguiente código de ejemplo está tomado del ejemplo SUBEDIT. A través de CComControl, la clase CAtlEdit deriva automáticamente 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()

Con la ventana contenida, m_EditCtrl, usará un mapa de mensajes en la clase contenedora, CAtlEdit derivada de CMessageMap.

Para más información sobre los mapas de mensajes, vea Mapas de mensajes en el artículo "Clases de ventanas ATL".

Requisitos

Encabezado: atlwin.h

CMessageMap::ProcessWindowMessage

Obtiene acceso al mapa de mensajes identificado por dwMsgMapID en una clase derivada de CMessageMap.

virtual BOOL ProcessWindowMessage(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT& lResult,
    DWORD dwMsgMapID) = 0;

Parámetros

hWnd
[in] Identificador de la ventana que recibe el mensaje.

uMsg
[in] Mensaje enviado a la ventana.

wParam
[in] Información adicional específica del mensaje.

lParam
[in] Información adicional específica del mensaje.

lResult
[out] Resultado del procesamiento de mensajes.

dwMsgMapID
[in] Identificador del mapa de mensajes que procesará el mensaje. El mapa de mensajes predeterminado, declarado con BEGIN_MSG_MAP, se identifica con 0. Un mapa de mensajes alternativo, declarado con ALT_MSG_MAP(msgMapID) se identifica con msgMapID.

Valor devuelto

TRUE si el mensaje está completamente controlado; de lo contrario, FALSE.

Comentarios

Llamada del procedimiento de ventana de un objeto CContainedWindow o de un objeto que se encadena dinámicamente al mapa de mensajes.

Consulte también

CDynamicChain (clase)
BEGIN_MSG_MAP
ALT_MSG_MAP(msgMapID)
Información general sobre la clase