Поделиться через


Класс CMessageMap

Этот класс позволяет картам сообщений объекта получать доступ к другому объекту.

Важно!

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Синтаксис

class ATL_NO_VTABLE CMessageMap

Участники

Открытые методы

Имя Описание
CMessageMap::P rocessWindowMessage Обращается к карте сообщений в производном CMessageMapклассе.

Замечания

CMessageMap — это абстрактный базовый класс, который позволяет картам сообщений объекта получать доступ к другому объекту. Чтобы объект предоставлял карты сообщений, его класс должен быть производным от CMessageMap.

ATL используется CMessageMap для поддержки автономных окон и динамической цепочки карт сообщений. Например, любой класс, содержащий объект CContainedWindow , должен быть производным от CMessageMap. Следующий код взят из примера SUBEDIT . С помощью CComControlCAtlEdit класс автоматически наследуется от 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()

Так как в автономном окне m_EditCtrlиспользуется карта сообщений в содержающем классе, CAtlEdit наследуется от CMessageMap.

Дополнительные сведения о картах сообщений Карты см. в статье "Классы окон ATL".

Требования

Заголовок: atlwin.h

CMessageMap::P rocessWindowMessage

Обращается к карте сообщений, определяемой dwMsgMapID в производном CMessageMapклассе.

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

Параметры

hWnd
[in] Дескриптор окна, получающего сообщение.

uMsg
[in] Сообщение, отправленное в окно.

wParam
[in] Дополнительные сведения о сообщении.

lParam
[in] Дополнительные сведения о сообщении.

lResult
[out] Результат обработки сообщения.

dwMsgMapID
[in] Идентификатор карты сообщений, обрабатывающей сообщение. Карта сообщений по умолчанию, объявленная с BEGIN_MSG_MAP, определяется по 0. Альтернативная карта сообщений, объявленная с ALT_MSG_MAP(msgMapID), определяется по msgMapID.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если сообщение полностью обработано; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Вызывается процедурой окна объекта CContainedWindow или объекта, который динамически цепляется на карту сообщений.

См. также

Класс CDynamicChain
BEGIN_MSG_MAP
ALT_MSG_MAP(msgMapID)
Общие сведения о классе