CMessageMap – třída
Tato třída umožňuje mapě zpráv objektu přístup jiným objektem.
Důležité
Tuto třídu a její členy nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.
Syntaxe
class ATL_NO_VTABLE CMessageMap
Členové
Veřejné metody
Název | Popis |
---|---|
CMessageMap::P rocessWindowMessage | Přistupuje k mapě zpráv v CMessageMap odvozené třídě. |
Poznámky
CMessageMap
je abstraktní základní třída, která umožňuje, aby mapy zpráv objektu byly přístupné jiným objektem. Aby objekt mohl zveřejnit své mapy zpráv, musí jeho třída odvodit z CMessageMap
.
ATL používá CMessageMap
k podpoře řetězení map s obsaženými okny a dynamickými zprávami. Například každá třída obsahující CContainedWindow objekt musí odvodit z CMessageMap
. Následující kód je převzat z ukázky SUBEDIT . Prostřednictvím CComControl třída CAtlEdit
automaticky odvozuje z 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()
Vzhledem k tomu, že obsažené okno , m_EditCtrl
bude používat mapu zpráv v obsahující třídě, CAtlEdit
odvozena od CMessageMap
.
Další informace o mapách zpráv najdete v tématu Mapy zpráv v článku Třídy oken ATL.
Požadavky
Hlavička: atlwin.h
CMessageMap::P rocessWindowMessage
Přistupuje k mapě zpráv identifikované dwMsgMapID v -odvozené CMessageMap
třídě.
virtual BOOL ProcessWindowMessage(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
LRESULT& lResult,
DWORD dwMsgMapID) = 0;
Parametry
hWnd
[v] Popisovač okna, ve které se zpráva zobrazuje.
uMsg
[v] Zpráva byla odeslána do okna.
wParam
[v] Další informace specifické pro zprávu
lParam
[v] Další informace specifické pro zprávu
LResult
[ven] Výsledek zpracování zprávy.
dwMsgMapID
[v] Identifikátor mapy zprávy, která zprávu zpracuje. Výchozí mapa zpráv deklarovaná pomocí BEGIN_MSG_MAP je identifikována hodnotou 0. Alternativní mapa zpráv deklarovaná pomocí ALT_MSG_MAP(msgMapID) je identifikována msgMapID
.
Návratová hodnota
TRUE, pokud je zpráva plně zpracována; jinak NEPRAVDA.
Poznámky
Volá se procedura okna CContainedWindow objektu nebo objektu, který je dynamicky zřetězený na mapu zprávy.
Viz také
CDynamicChain – třída
BEGIN_MSG_MAP
ALT_MSG_MAP(msgMapID)
Přehled třídy