Sdílet prostřednictvím


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

Jméno popis
CMessageMap::P rocessWindowMessage Přistupuje k mapě zpráv v CMessageMapodvozené 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_EditCtrlbude 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ávy 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é CMessageMaptří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.

Vrácená 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