Класс 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)
Общие сведения о классе