Sdílet prostřednictvím


Makra map zpráv (ATL)

Tato makra definují mapy zpráv a položky.

Jméno popis
ALT_MSG_MAP Označí začátek alternativní mapy zpráv.
BEGIN_MSG_MAP Označí začátek výchozí mapy zpráv.
CHAIN_MSG_MAP_ALT Zřetězí se s alternativní mapou zpráv v základní třídě.
CHAIN_MSG_MAP_ALT_MEMBER Zřetězí se s alternativní mapou zpráv v datovém členu třídy.
CHAIN_MSG_MAP Zřetězí výchozí mapu zpráv v základní třídě.
CHAIN_MSG_MAP_DYNAMIC Zřetědí mapu zpráv v jiné třídě za běhu.
CHAIN_MSG_MAP_MEMBER Zřetězí výchozí mapu zpráv v datovém členu třídy.
COMMAND_CODE_HANDLER Mapy WM_COMMAND zprávu do funkce obslužné rutiny na základě kódu oznámení.
COMMAND_HANDLER Mapy WM_COMMAND zprávu do funkce obslužné rutiny na základě kódu oznámení a identifikátoru položky nabídky, ovládacího prvku nebo akcelerátoru.
COMMAND_ID_HANDLER Mapy zprávu WM_COMMAND funkci obslužné rutiny na základě identifikátoru položky nabídky, ovládacího prvku nebo akcelerátoru.
COMMAND_RANGE_CODE_HANDLER Mapy WM_COMMAND zprávu do funkce obslužné rutiny na základě kódu oznámení a souvislého rozsahu identifikátorů ovládacích prvků.
COMMAND_RANGE_HANDLER Mapy WM_COMMAND zprávu do funkce obslužné rutiny na základě souvislého rozsahu identifikátorů ovládacích prvků.
DECLARE_EMPTY_MSG_MAP Implementuje prázdnou mapu zpráv.
DEFAULT_REFLECTION_HANDLER Poskytuje výchozí obslužnou rutinu pro reflektované zprávy, které nejsou zpracovávány jinak.
END_MSG_MAP Označí konec mapy zpráv.
FORWARD_NOTIFICATIONS Přepošla zprávy s oznámeními do nadřazeného okna.
MESSAGE_HANDLER Mapy zprávu systému Windows do funkce obslužné rutiny.
MESSAGE_RANGE_HANDLER Mapy souvislý rozsah zpráv Systému Windows do funkce obslužné rutiny.
NOTIFY_CODE_HANDLER Mapy WM_NOTIFY zprávu do funkce obslužné rutiny na základě kódu oznámení.
NOTIFY_HANDLER Mapy WM_NOTIFY zprávu do funkce obslužné rutiny na základě kódu oznámení a identifikátoru ovládacího prvku.
NOTIFY_ID_HANDLER Mapy WM_NOTIFY zprávu funkci obslužné rutiny na základě identifikátoru ovládacího prvku.
NOTIFY_RANGE_CODE_HANDLER Mapy WM_NOTIFY zprávu do funkce obslužné rutiny na základě kódu oznámení a souvislého rozsahu identifikátorů ovládacích prvků.
NOTIFY_RANGE_HANDLER Mapy WM_NOTIFY zprávu do funkce obslužné rutiny na základě souvislého rozsahu identifikátorů ovládacích prvků.
REFLECT_NOTIFICATIONS Reflexe s oznámení zpět do okna, které jim poslal.
REFLECTED_COMMAND_CODE_HANDLER Mapy reflektovat WM_COMMAND zprávu do funkce obslužné rutiny na základě kódu oznámení.
REFLECTED_COMMAND_HANDLER Mapy reflektování WM_COMMAND zprávy do funkce obslužné rutiny na základě kódu oznámení a identifikátoru položky nabídky, ovládacího prvku nebo akcelerátoru.
REFLECTED_COMMAND_ID_HANDLER Mapy reflektování WM_COMMAND zprávy do funkce obslužné rutiny na základě identifikátoru položky nabídky, ovládacího prvku nebo akcelerátoru.
REFLECTED_COMMAND_RANGE_CODE_HANDLER Mapy reflektovaných WM_COMMAND zpráv do funkce obslužné rutiny na základě kódu oznámení a souvislého rozsahu identifikátorů ovládacích prvků.
REFLECTED_COMMAND_RANGE_HANDLER Mapy zrcadlenou WM_COMMAND zprávu do funkce obslužné rutiny na základě souvislého rozsahu identifikátorů ovládacích prvků.
REFLECTED_NOTIFY_CODE_HANDLER Mapy reflektovat WM_NOTIFY zprávu do funkce obslužné rutiny na základě kódu oznámení.
REFLECTED_NOTIFY_HANDLER Mapy reflektovat WM_NOTIFY zprávu do funkce obslužné rutiny na základě kódu oznámení a identifikátoru ovládacího prvku.
REFLECTED_NOTIFY_ID_HANDLER Mapy reflektovat WM_NOTIFY zprávu do funkce obslužné rutiny na základě identifikátoru ovládacího prvku.
REFLECTED_NOTIFY_RANGE_CODE_HANDLER Mapy zrcadlenou WM_NOTIFY zprávu do funkce obslužné rutiny na základě kódu oznámení a souvislého rozsahu identifikátorů ovládacích prvků.
REFLECTED_NOTIFY_RANGE_HANDLER Mapy reflektovaných WM_NOTIFY zpráv do funkce obslužné rutiny na základě souvislého rozsahu identifikátorů ovládacích prvků.

Požadavky

Hlavička: atlwin.h

ALT_MSG_MAP

Označí začátek alternativní mapy zpráv.

ALT_MSG_MAP(msgMapID)

Parametry

msgMapID
[v] Identifikátor mapy zpráv.

Poznámky

ATL identifikuje každou mapu zpráv číslem. Výchozí mapa zpráv (deklarovaná pomocí makra BEGIN_MSG_MAP) je identifikována hodnotou 0. Alternativní mapa zpráv je identifikována msgMapID.

Mapy zpráv se používají ke zpracování zpráv odeslaných do okna. Například CContainedWindow umožňuje zadat identifikátor mapy zprávy v obsahujícím objektu. CContainedWindow::WindowProc pak pomocí této mapy zpráv směruje zprávy obsaženého okna buď na příslušnou funkci obslužné rutiny, nebo na jinou mapu zpráv. Seznam maker deklarovaných funkcí obslužné rutiny najdete v tématu BEGIN_MSG_MAP.

Vždy zahajte mapu zpráv pomocí BEGIN_MSG_MAP. Potom můžete deklarovat další alternativní mapy zpráv.

Makro END_MSG_MAP označuje konec mapy zpráv. Všimněte si, že vždy existuje přesně jedna instance BEGIN_MSG_MAP a END_MSG_MAP.

Další informace o používání map zpráv v ATL naleznete v tématu Zpráva Mapy.

Příklad

Následující příklad ukazuje výchozí mapu zpráv a jednu alternativní mapu zpráv, z nichž každá obsahuje jednu funkci obslužné rutiny:

BEGIN_MSG_MAP(CMyOneAltClass)
   MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()

Následující příklad ukazuje dvě alternativní mapy zpráv. Výchozí mapa zpráv je prázdná.

BEGIN_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_PAINT, OnPaint)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
   MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()

Požadavky

Hlavička: atlwin.h

BEGIN_MSG_MAP

Označí začátek výchozí mapy zpráv.

BEGIN_MSG_MAP(theClass)

Parametry

theClass
[v] Název třídy obsahující mapu zpráv.

Poznámky

CWindowImpl::WindowProc používá výchozí mapu zpráv ke zpracování zpráv odeslaných do okna. Mapa zpráv směruje zprávy buď na příslušnou funkci obslužné rutiny, nebo na jinou mapu zpráv.

Následující makra mapují zprávu na funkci obslužné rutiny. Tato funkce musí být definována v třídě.

Makro Popis
MESSAGE_HANDLER Mapy zprávu systému Windows do funkce obslužné rutiny.
MESSAGE_RANGE_HANDLER Mapy souvislý rozsah zpráv Systému Windows do funkce obslužné rutiny.
COMMAND_HANDLER Mapy WM_COMMAND zprávu do funkce obslužné rutiny na základě kódu oznámení a identifikátoru položky nabídky, ovládacího prvku nebo akcelerátoru.
COMMAND_ID_HANDLER Mapy zprávu WM_COMMAND funkci obslužné rutiny na základě identifikátoru položky nabídky, ovládacího prvku nebo akcelerátoru.
COMMAND_CODE_HANDLER Mapy WM_COMMAND zprávu do funkce obslužné rutiny na základě kódu oznámení.
COMMAND_RANGE_HANDLER Mapy souvislou oblast WM_COMMAND zpráv do funkce obslužné rutiny na základě identifikátoru položky nabídky, ovládacího prvku nebo akcelerátoru.
NOTIFY_HANDLER Mapy WM_NOTIFY zprávu do funkce obslužné rutiny na základě kódu oznámení a identifikátoru ovládacího prvku.
NOTIFY_ID_HANDLER Mapy WM_NOTIFY zprávu funkci obslužné rutiny na základě identifikátoru ovládacího prvku.
NOTIFY_CODE_HANDLER Mapy WM_NOTIFY zprávu do funkce obslužné rutiny na základě kódu oznámení.
NOTIFY_RANGE_HANDLER Mapy souvislý rozsah WM_NOTIFY zpráv do funkce obslužné rutiny na základě identifikátoru ovládacího prvku.

Následující makra směrují zprávy do jiné mapy zpráv. Tento proces se nazývá řetězení.

Makro Popis
CHAIN_MSG_MAP Zřetězí výchozí mapu zpráv v základní třídě.
CHAIN_MSG_MAP_MEMBER Zřetězí výchozí mapu zpráv v datovém členu třídy.
CHAIN_MSG_MAP_ALT Zřetězí se s alternativní mapou zpráv v základní třídě.
CHAIN_MSG_MAP_ALT_MEMBER Zřetězí se s alternativní mapou zpráv v datovém členu třídy.
CHAIN_MSG_MAP_DYNAMIC Zřetězí výchozí mapu zpráv v jiné třídě za běhu.

Následující makra přímo "odrazují" zprávy z nadřazeného okna. Například ovládací prvek obvykle odesílá zprávy s oznámením do nadřazeného okna ke zpracování, ale nadřazené okno může odrážet zprávu zpět do ovládacího prvku.

Makro Popis
REFLECTED_COMMAND_HANDLER Mapy reflektování WM_COMMAND zprávy do funkce obslužné rutiny na základě kódu oznámení a identifikátoru položky nabídky, ovládacího prvku nebo akcelerátoru.
REFLECTED_COMMAND_ID_HANDLER Mapy reflektování WM_COMMAND zprávy do funkce obslužné rutiny na základě identifikátoru položky nabídky, ovládacího prvku nebo akcelerátoru.
REFLECTED_COMMAND_CODE_HANDLER Mapy reflektovat WM_COMMAND zprávu do funkce obslužné rutiny na základě kódu oznámení.
REFLECTED_COMMAND_RANGE_HANDLER Mapy zrcadlenou WM_COMMAND zprávu do funkce obslužné rutiny na základě souvislého rozsahu identifikátorů ovládacích prvků.
REFLECTED_COMMAND_RANGE_CODE_HANDLER Mapy reflektovaných WM_COMMAND zpráv do funkce obslužné rutiny na základě kódu oznámení a souvislého rozsahu identifikátorů ovládacích prvků.
REFLECTED_NOTIFY_HANDLER Mapy reflektovat WM_NOTIFY zprávu do funkce obslužné rutiny na základě kódu oznámení a identifikátoru ovládacího prvku.
REFLECTED_NOTIFY_ID_HANDLER Mapy reflektovat WM_NOTIFY zprávu do funkce obslužné rutiny na základě identifikátoru ovládacího prvku.
REFLECTED_NOTIFY_CODE_HANDLER Mapy reflektovat WM_NOTIFY zprávu do funkce obslužné rutiny na základě kódu oznámení.
REFLECTED_NOTIFY_RANGE_HANDLER Mapy reflektovaných WM_NOTIFY zpráv do funkce obslužné rutiny na základě souvislého rozsahu identifikátorů ovládacích prvků.
REFLECTED_NOTIFY_RANGE_CODE_HANDLER Mapy zrcadlenou WM_NOTIFY zprávu do funkce obslužné rutiny na základě kódu oznámení a souvislého rozsahu identifikátorů ovládacích prvků.

Příklad

class CMyExtWindow : public CMyBaseWindow
{
public:
   BEGIN_MSG_MAP(CMyExtWindow)
      MESSAGE_HANDLER(WM_PAINT, OnPaint)
      MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
      CHAIN_MSG_MAP(CMyBaseWindow)
   END_MSG_MAP()

   LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      return 0;   
   }

   LRESULT OnSetFocus(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/) 
   {
      return 0;   
   }
};

CMyExtWindow Když objekt obdrží WM_PAINT zprávu, zpráva se směruje na CMyExtWindow::OnPaint skutečné zpracování. Pokud OnPaint označuje, že zpráva vyžaduje další zpracování, bude zpráva přesměrována na výchozí mapu zpráv v CMyBaseWindow.

Kromě výchozí mapy zpráv můžete definovat alternativní mapu zpráv pomocí ALT_MSG_MAP. Vždy zahajte mapu zpráv pomocí BEGIN_MSG_MAP. Potom můžete deklarovat další alternativní mapy zpráv. Následující příklad ukazuje výchozí mapu zpráv a jednu alternativní mapu zpráv, z nichž každá obsahuje jednu funkci obslužné rutiny:

BEGIN_MSG_MAP(CMyOneAltClass)
   MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()

Následující příklad ukazuje dvě alternativní mapy zpráv. Výchozí mapa zpráv je prázdná.

BEGIN_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_PAINT, OnPaint)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
   MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()

Makro END_MSG_MAP označuje konec mapy zpráv. Všimněte si, že vždy existuje přesně jedna instance BEGIN_MSG_MAP a END_MSG_MAP.

Další informace o používání map zpráv v ATL naleznete v tématu Zpráva Mapy.

Požadavky

Hlavička: atlwin.h

CHAIN_MSG_MAP_ALT

Definuje položku v mapě zpráv.

CHAIN_MSG_MAP_ALT(theChainClass, msgMapID)

Parametry

theChainClass
[v] Název základní třídy obsahující mapu zpráv.

msgMapID
[v] Identifikátor mapy zpráv.

Poznámky

CHAIN_MSG_MAP_ALT směruje zprávy na alternativní mapu zpráv v základní třídě. Musíte deklarovat tuto alternativní mapu zpráv s ALT_MSG_MAP(msgMapID). Chcete-li směrovat zprávy do výchozí mapy zpráv základní třídy (deklarované pomocí BEGIN_MSG_MAP), použijte CHAIN_MSG_MAP. Příklad najdete v CHAIN_MSG_MAP.

Poznámka

Vždy zahajte mapu zpráv pomocí BEGIN_MSG_MAP. Potom můžete deklarovat další alternativní mapy zpráv pomocí ALT_MSG_MAP. Makro END_MSG_MAP označuje konec mapy zpráv. Každá mapa zpráv musí mít přesně jednu instanci BEGIN_MSG_MAP a END_MSG_MAP.

Další informace o používání map zpráv v ATL naleznete v tématu Zpráva Mapy.

Požadavky

Hlavička: atlwin.h

CHAIN_MSG_MAP_ALT_MEMBER

Definuje položku v mapě zpráv.

CHAIN_MSG_MAP_ALT_MEMBER(theChainMember, msgMapID)

Parametry

TheChainMember
[v] Název datového člena obsahujícího mapu zpráv.

msgMapID
[v] Identifikátor mapy zpráv.

Poznámky

CHAIN_MSG_MAP_ALT_MEMBER směruje zprávy na alternativní mapu zpráv v datovém členu. Musíte deklarovat tuto alternativní mapu zpráv s ALT_MSG_MAP(msgMapID). Chcete-li směrovat zprávy na výchozí mapu zpráv datového člena (deklarovanou pomocí BEGIN_MSG_MAP), použijte CHAIN_MSG_MAP_MEMBER. Příklad najdete v tématu CHAIN_MSG_MAP_MEMBER.

Poznámka

Vždy zahajte mapu zpráv pomocí BEGIN_MSG_MAP. Potom můžete deklarovat další alternativní mapy zpráv pomocí ALT_MSG_MAP. Makro END_MSG_MAP označuje konec mapy zpráv. Každá mapa zpráv musí mít přesně jednu instanci BEGIN_MSG_MAP a END_MSG_MAP.

Další informace o používání map zpráv v ATL naleznete v tématu Zpráva Mapy.

Požadavky

Hlavička: atlwin.h

CHAIN_MSG_MAP

Definuje položku v mapě zpráv.

CHAIN_MSG_MAP(theChainClass)

Parametry

theChainClass
[v] Název základní třídy obsahující mapu zpráv.

Poznámky

CHAIN_MSG_MAP směruje zprávy do výchozí mapy zpráv základní třídy (deklarované pomocí BEGIN_MSG_MAP). Pokud chcete směrovat zprávy do alternativní mapy zpráv základní třídy (deklarované pomocí ALT_MSG_MAP), použijte CHAIN_MSG_MAP_ALT.

Poznámka

Vždy zahajte mapu zpráv pomocí BEGIN_MSG_MAP. Potom můžete deklarovat další alternativní mapy zpráv pomocí ALT_MSG_MAP. Makro END_MSG_MAP označuje konec mapy zpráv. Každá mapa zpráv musí mít přesně jednu instanci BEGIN_MSG_MAP a END_MSG_MAP.

Další informace o používání map zpráv v ATL naleznete v tématu Zpráva Mapy.

Příklad

class CMyExtClass : public CMyBaseClass
{
public:
  BEGIN_MSG_MAP(CMyExtClass)
     MESSAGE_HANDLER(WM_PAINT, OnPaint)
     // chain to default message map in CMyBaseClass
     CHAIN_MSG_MAP(CMyBaseClass)
  ALT_MSG_MAP(1)
     // chain to first alternative message map in CMyBaseClass
     CHAIN_MSG_MAP(CMyBaseClass)
  ALT_MSG_MAP(2)
     MESSAGE_HANDLER(WM_CHAR, OnChar)
     // chain to alternate message map in CMyBaseClass
     CHAIN_MSG_MAP_ALT(CMyBaseClass, 1)
  END_MSG_MAP()

   LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      return 0;   
   }

   LRESULT OnChar(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      return 0;   
   }
};

Tento příklad ukazuje následující:

  • Pokud procedura okna používá CMyClassvýchozí mapu zpráv a OnPaint nezpracuje zprávu, zpráva se přesměruje na CMyBaseClassvýchozí mapu zpráv pro zpracování.

  • Pokud procedura okna používá první alternativní mapu zpráv v CMyClass, všechny zprávy jsou směrovány na CMyBaseClassvýchozí mapu zpráv.

  • Pokud procedura okna používá CMyClassdruhou alternativní mapu zpráv a OnChar nezpracuje zprávu, zpráva se přesměruje na zadanou alternativní mapu zpráv v CMyBaseClasssouboru . CMyBaseClass musí být deklarována tato mapa zpráv s ALT_MSG_MAP(1).

Požadavky

Hlavička: atlwin.h

CHAIN_MSG_MAP_DYNAMIC

Definuje položku v mapě zpráv.

CHAIN_MSG_MAP_DYNAMIC(dynaChainID)

Parametry

dynaChainID
[v] Jedinečný identifikátor mapy zpráv objektu.

Poznámky

CHAIN_MSG_MAP_DYNAMIC směruje zprávy za běhu na výchozí mapu zpráv v jiném objektu. Objekt a jeho mapa zprávy jsou přidruženy dynaChainID, který definujete prostřednictvím CDynamicChain::SetChainEntry. Chcete-li použít CHAIN_MSG_MAP_DYNAMIC, musíte třídu CDynamicChain odvodit. Příklad najdete v přehledu CDynamicChain .

Poznámka

Vždy zahajte mapu zpráv pomocí BEGIN_MSG_MAP. Potom můžete deklarovat další alternativní mapy zpráv pomocí ALT_MSG_MAP. Makro END_MSG_MAP označuje konec mapy zpráv. Každá mapa zpráv musí mít přesně jednu instanci BEGIN_MSG_MAP a END_MSG_MAP.

Další informace o používání map zpráv v ATL naleznete v tématu Zpráva Mapy.

Požadavky

Hlavička: atlwin.h

CHAIN_MSG_MAP_MEMBER

Definuje položku v mapě zpráv.

CHAIN_MSG_MAP_MEMBER(theChainMember)

Parametry

TheChainMember
[v] Název datového člena obsahujícího mapu zpráv.

Poznámky

CHAIN_MSG_MAP_MEMBER směruje zprávy na výchozí mapu zpráv datového člena (deklarovanou pomocí BEGIN_MSG_MAP). Pokud chcete směrovat zprávy na alternativní mapu zpráv datového člena (deklarované pomocí ALT_MSG_MAP), použijte CHAIN_MSG_MAP_ALT_MEMBER.

Poznámka

Vždy zahajte mapu zpráv pomocí BEGIN_MSG_MAP. Potom můžete deklarovat další alternativní mapy zpráv pomocí ALT_MSG_MAP. Makro END_MSG_MAP označuje konec mapy zpráv. Každá mapa zpráv musí mít přesně jednu instanci BEGIN_MSG_MAP a END_MSG_MAP.

Další informace o používání map zpráv v ATL naleznete v tématu Zpráva Mapy.

Příklad

class CMyContainerClass : public CWindowImpl<CMyContainerClass>
{
public:
   CMyContainedClass m_obj;

   BEGIN_MSG_MAP(CMyContainerClass)
      MESSAGE_HANDLER(WM_PAINT, OnPaint)
      // chain to default message map of m_obj
      CHAIN_MSG_MAP_MEMBER(m_obj)
   ALT_MSG_MAP(1)
      // chain to default message map of m_obj
      CHAIN_MSG_MAP_MEMBER(m_obj)
   ALT_MSG_MAP(2)
      MESSAGE_HANDLER(WM_CHAR, OnChar)
      // chain to alternate message map of m_obj
      CHAIN_MSG_MAP_ALT_MEMBER(m_obj, 1)
   END_MSG_MAP()

   LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      return 0;   
   }
   LRESULT OnChar(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      return 0;   
   }
};

Tento příklad ukazuje následující:

  • Pokud procedura okna používá CMyClassvýchozí mapu zpráv a OnPaint nezpracuje zprávu, zpráva se přesměruje na m_objvýchozí mapu zpráv pro zpracování.

  • Pokud procedura okna používá první alternativní mapu zpráv v CMyClass, všechny zprávy jsou směrovány na m_objvýchozí mapu zpráv.

  • Pokud procedura okna používá CMyClassdruhou alternativní mapu zpráv a OnChar nezpracuje zprávu, zpráva se přesměruje na zadanou alternativní mapu m_objzprávy . Třída CMyContainedClass musí deklarovat tuto mapu zpráv s ALT_MSG_MAP(1).

Požadavky

Hlavička: atlwin.h

COMMAND_CODE_HANDLER

Podobá se COMMAND_HANDLER, ale mapuje WM_COMMAND zprávu pouze na základě kódu oznámení.

COMMAND_CODE_HANDLER(code, func)

Parametry

kód
[v] Kód oznámení.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

COMMAND_HANDLER

Definuje položku v mapě zpráv.

COMMAND_HANDLER(id, code, func)

Parametry

id
[v] Identifikátor položky nabídky, ovládacího prvku nebo akcelerátoru.

kód
[v] Kód oznámení.

func
[v] Název funkce obslužné rutiny zprávy.

Poznámky

COMMAND_HANDLER mapuje WM_COMMAND zprávu na zadanou funkci obslužné rutiny na základě kódu oznámení a identifikátoru ovládacího prvku. Příklad:

class ATL_NO_VTABLE CPolyProp :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CPolyProp, &CLSID_PolyProp>,
   public IPropertyPageImpl<CPolyProp>,
   public CDialogImpl<CPolyProp>
{
public:
BEGIN_COM_MAP(CPolyProp)
   COM_INTERFACE_ENTRY(IPropertyPage)
END_COM_MAP()

BEGIN_MSG_MAP(CPolyProp)
   COMMAND_HANDLER(IDC_SIDES, EN_CHANGE, OnEnChangeSides)
   CHAIN_MSG_MAP(IPropertyPageImpl<CPolyProp>)
END_MSG_MAP()

   // When a CPolyProp object receives a WM_COMMAND message identified 
   // by IDC_SIDES and EN_CHANGE, the message is directed to 
   // CPolyProp::OnEnChangeSides for the actual processing.
   LRESULT OnEnChangeSides(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, 
      BOOL& /*bHandled*/);

Libovolná funkce zadaná v makrech COMMAND_HANDLER musí být definována takto:

LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);

Mapa zpráv se před zavolání nastaví bHandled na TRUE CommandHandler . Pokud CommandHandler zprávu plně nezpracuje, měla by být nastavena bHandled na HODNOTU FALSE, aby bylo možné označit, že zpráva potřebuje další zpracování.

Poznámka

Vždy zahajte mapu zpráv pomocí BEGIN_MSG_MAP. Potom můžete deklarovat další alternativní mapy zpráv pomocí ALT_MSG_MAP. Makro END_MSG_MAP označuje konec mapy zpráv. Každá mapa zpráv musí mít přesně jednu instanci BEGIN_MSG_MAP a END_MSG_MAP.

Kromě COMMAND_HANDLER můžete pomocí MESSAGE_HANDLER namapovat WM_COMMAND zprávu bez ohledu na identifikátor nebo kód. V tomto případě MESSAGE_HANDLER(WM_COMMAND, OnHandlerFunction) bude všechny WM_COMMAND zprávy směrovat na OnHandlerFunction.

Další informace o používání map zpráv v ATL naleznete v tématu Zpráva Mapy.

Požadavky

Hlavička: atlwin.h

COMMAND_ID_HANDLER

Podobá se COMMAND_HANDLER, ale mapuje WM_COMMAND zprávu pouze na základě identifikátoru položky nabídky, ovládacího prvku nebo akcelerátoru.

COMMAND_ID_HANDLER(id, func)

Parametry

id
[v] Identifikátor položky nabídky, ovládacího prvku nebo akcelerátoru, který zprávu odesílá.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

COMMAND_RANGE_CODE_HANDLER

Podobně jako COMMAND_RANGE_HANDLER, ale mapuje WM_COMMAND zprávy s konkrétním kódem oznámení z řady ovládacích prvků na jednu funkci obslužné rutiny.

COMMAND_RANGE_CODE_HANDLER(idFirst, idLast, code, func)

Parametry

idFirst
[v] Označí začátek souvislého rozsahu identifikátorů ovládacích prvků.

IdLast
[v] Označí konec souvislého rozsahu identifikátorů ovládacích prvků.

kód
[v] Kód oznámení.

func
[v] Název funkce obslužné rutiny zprávy.

Poznámky

Tato oblast je založená na identifikátoru položky nabídky, ovládacího prvku nebo akcelerátoru, který zprávu odesílá.

Požadavky

Hlavička: atlwin.h

COMMAND_RANGE_HANDLER

Podobně jako COMMAND_HANDLER, ale mapuje WM_COMMAND zprávy z řady ovládacích prvků na jednu funkci obslužné rutiny.

COMMAND_RANGE_HANDLER( idFirst, idLast, func)

Parametry

idFirst
[v] Označí začátek souvislého rozsahu identifikátorů ovládacích prvků.

IdLast
[v] Označí konec souvislého rozsahu identifikátorů ovládacích prvků.

func
[v] Název funkce obslužné rutiny zprávy.

Poznámky

Tato oblast je založená na identifikátoru položky nabídky, ovládacího prvku nebo akcelerátoru, který zprávu odesílá.

Požadavky

Hlavička: atlwin.h

DECLARE_EMPTY_MSG_MAP

Deklaruje prázdnou mapu zpráv.

DECLARE_EMPTY_MSG_MAP()

Poznámky

DECLARE_EMPTY_MSG_MAP je pohodlné makro, které volá makra BEGIN_MSG_MAP a END_MSG_MAP k vytvoření prázdné mapy zpráv:

BEGIN_MSG_MAP(CExample)
END_MSG_MAP()

DEFAULT_REFLECTION_HANDLER

Poskytuje výchozí obslužnou rutinu pro podřízené okno (ovládací prvek), který bude přijímat reflektující zprávy; obslužná rutina správně předá neošetřené zprávy DefWindowProc.

DEFAULT_REFLECTION_HANDLER()

Požadavky

Hlavička: atlwin.h

END_MSG_MAP

Označí konec mapy zpráv.

END_MSG_MAP()

Poznámky

K označení začátku mapy zpráv vždy použijte makro BEGIN_MSG_MAP . Pomocí ALT_MSG_MAP deklarujte další alternativní mapy zpráv.

Všimněte si, že vždy existuje přesně jedna instance BEGIN_MSG_MAP a END_MSG_MAP.

Další informace o používání map zpráv v ATL naleznete v tématu Zpráva Mapy.

Příklad

Následující příklad ukazuje výchozí mapu zpráv a jednu alternativní mapu zpráv, z nichž každá obsahuje jednu funkci obslužné rutiny:

BEGIN_MSG_MAP(CMyOneAltClass)
   MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()

Následující příklad ukazuje dvě alternativní mapy zpráv. Výchozí mapa zpráv je prázdná.

BEGIN_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_PAINT, OnPaint)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
   MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()

Požadavky

Hlavička: atlwin.h

FORWARD_NOTIFICATIONS

Přepošla zprávy s oznámeními do nadřazeného okna.

FORWARD_NOTIFICATIONS()

Poznámky

Toto makro zadejte jako součást mapy zpráv.

Požadavky

Hlavička: atlwin.h

MESSAGE_HANDLER

Definuje položku v mapě zpráv.

MESSAGE_HANDLER( msg, func )

Parametry

Msg
[v] Zpráva systému Windows.

func
[v] Název funkce obslužné rutiny zprávy.

Poznámky

MESSAGE_HANDLER mapuje zprávu systému Windows na zadanou funkci obslužné rutiny.

Libovolná funkce zadaná v makrech MESSAGE_HANDLER musí být definována takto:

LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);

Mapa zpráv se před zavolání nastaví bHandled na TRUE MessageHandler . Pokud MessageHandler zprávu plně nezpracuje, měla by být nastavena bHandled na HODNOTU FALSE, aby bylo možné označit, že zpráva potřebuje další zpracování.

Poznámka

Vždy zahajte mapu zpráv pomocí BEGIN_MSG_MAP. Potom můžete deklarovat další alternativní mapy zpráv pomocí ALT_MSG_MAP. Makro END_MSG_MAP označuje konec mapy zpráv. Každá mapa zpráv musí mít přesně jednu instanci BEGIN_MSG_MAP a END_MSG_MAP.

Kromě MESSAGE_HANDLER můžete k mapování WM_COMMAND a WM_NOTIFY zpráv použít COMMAND_HANDLER a NOTIFY_HANDLER.

Další informace o používání map zpráv v ATL naleznete v tématu Zpráva Mapy.

Příklad

class CMyBaseWindow : public CWindowImpl<CMyBaseWindow>
{
public:
   BEGIN_MSG_MAP(CMyBaseWindow)
      MESSAGE_HANDLER(WM_CREATE, OnCreate)
   END_MSG_MAP()

   // When a CMyBaseWindow object receives a WM_CREATE message, the message
   // is directed to CMyBaseWindow::OnCreate for the actual processing.
   LRESULT OnCreate(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      return 0;   
   }
};

Požadavky

Hlavička: atlwin.h

MESSAGE_RANGE_HANDLER

Podobně jako MESSAGE_HANDLER, ale mapuje rozsah zpráv Systému Windows na jedinou funkci obslužné rutiny.

MESSAGE_RANGE_HANDLER( msgFirst, msgLast, func )

Parametry

msgFirst
[v] Označí začátek souvislého rozsahu zpráv.

msgLast
[v] Označí konec souvislého rozsahu zpráv.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

NOTIFY_CODE_HANDLER

Podobá se NOTIFY_HANDLER, ale mapuje WM_NOTIFY zprávu pouze na základě kódu oznámení.

NOTIFY_CODE_HANDLER(cd, func)

Parametry

Cd
[v] Kód oznámení.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

NOTIFY_HANDLER

Definuje položku v mapě zpráv.

NOTIFY_HANDLER( id, cd, func )

Parametry

id
[v] Identifikátor ovládacího prvku, který zprávu odesílá.

Cd
[v] Kód oznámení.

func
[v] Název funkce obslužné rutiny zprávy.

Poznámky

NOTIFY_HANDLER mapuje WM_NOTIFY zprávu na zadanou funkci obslužné rutiny na základě kódu oznámení a identifikátoru ovládacího prvku.

Libovolná funkce zadaná v makrech NOTIFY_HANDLER musí být definována takto:

LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);

Mapa zpráv se před zavolání nastaví bHandled na TRUE NotifyHandler . Pokud NotifyHandler zprávu plně nezpracuje, měla by být nastavena bHandled na HODNOTU FALSE, aby bylo možné označit, že zpráva potřebuje další zpracování.

Poznámka

Vždy zahajte mapu zpráv pomocí BEGIN_MSG_MAP. Potom můžete deklarovat další alternativní mapy zpráv pomocí ALT_MSG_MAP. Makro END_MSG_MAP označuje konec mapy zpráv. Každá mapa zpráv musí mít přesně jednu instanci BEGIN_MSG_MAP a END_MSG_MAP.

Kromě NOTIFY_HANDLER můžete pomocí MESSAGE_HANDLER mapovat WM_NOTIFY zprávu bez ohledu na identifikátor nebo kód. V tomto případě MESSAGE_HANDLER(WM_NOTIFY, OnHandlerFunction) bude směrovat všechny WM_NOTIFY zprávy na OnHandlerFunction.

Další informace o používání map zpráv v ATL naleznete v tématu Zpráva Mapy.

Příklad

class CMyDialog2 : public CDialogImpl<CMyDialog2>
{
public:
   enum { IDD = IDD_MYDLG };

   BEGIN_MSG_MAP(CMyDialog2)
      NOTIFY_HANDLER(IDC_TREE1, NM_CLICK, OnNMClickTree1)
   END_MSG_MAP()

public:
   // When a CMyDialog2 object receives a WM_NOTIFY message 
   // identified by IDC_TREE1 and NM_CLICK, the message is 
   // directed to CMyDialog2::OnNMClickTree1 for the actual
   // processing.
   LRESULT OnNMClickTree1(int /*idCtrl*/, LPNMHDR pNMHDR, BOOL& /*bHandled*/);
};

Požadavky

Hlavička: atlwin.h

NOTIFY_ID_HANDLER

Podobá se NOTIFY_HANDLER, ale mapuje WM_NOTIFY zprávu pouze na základě identifikátoru ovládacího prvku.

NOTIFY_ID_HANDLER( id, func )

Parametry

id
[v] Identifikátor ovládacího prvku, který zprávu odesílá.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

NOTIFY_RANGE_CODE_HANDLER

Podobně jako NOTIFY_RANGE_HANDLER, ale mapuje WM_NOTIFY zprávy s konkrétním kódem oznámení z řady ovládacích prvků na jednu funkci obslužné rutiny.

NOTIFY_RANGE_CODE_HANDLER( idFirst, idLast, cd, func )

Parametry

idFirst
[v] Označí začátek souvislého rozsahu identifikátorů ovládacích prvků.

IdLast
[v] Označí konec souvislého rozsahu identifikátorů ovládacích prvků.

Cd
[v] Kód oznámení.

func
[v] Název funkce obslužné rutiny zprávy.

Poznámky

Tato oblast je založená na identifikátoru ovládacího prvku, který zprávu odesílá.

Požadavky

Hlavička: atlwin.h

NOTIFY_RANGE_HANDLER

Podobně jako NOTIFY_HANDLER, ale mapuje WM_NOTIFY zprávy z řady ovládacích prvků na jednu funkci obslužné rutiny.

NOTIFY_RANGE_HANDLER( idFirst, idLast, func )

Parametry

idFirst
[v] Označí začátek souvislého rozsahu identifikátorů ovládacích prvků.

IdLast
[v] Označí konec souvislého rozsahu identifikátorů ovládacích prvků.

func
[v] Název funkce obslužné rutiny zprávy.

Poznámky

Tato oblast je založená na identifikátoru ovládacího prvku, který zprávu odesílá.

Požadavky

Hlavička: atlwin.h

REFLECT_NOTIFICATIONS

Reflexe s oznámení zprávy zpět do podřízeného okna (ovládací prvek), který je poslal.

REFLECT_NOTIFICATIONS()

Poznámky

Toto makro zadejte jako součást mapy zpráv nadřazeného okna.

Požadavky

Hlavička: atlwin.h

REFLECTED_COMMAND_CODE_HANDLER

Podobně jako v COMMAND_CODE_HANDLER se příkazy mapuje z nadřazeného okna.

REFLECTED_COMMAND_CODE_HANDLER( code, func )

Parametry

kód
[v] Kód oznámení.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

REFLECTED_COMMAND_HANDLER

Podobně jako COMMAND_HANDLER, ale příkazy map se odrazí z nadřazeného okna.

REFLECTED_COMMAND_HANDLER( id, code, func )

Parametry

id
[v] Identifikátor položky nabídky, ovládacího prvku nebo akcelerátoru.

kód
[v] Kód oznámení.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

REFLECTED_COMMAND_ID_HANDLER

Podobně jako v COMMAND_ID_HANDLER se příkazy mapuje z nadřazeného okna.

REFLECTED_COMMAND_ID_HANDLER( id, func )

Parametry

id
[v] Identifikátor položky nabídky, ovládacího prvku nebo akcelerátoru.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

REFLECTED_COMMAND_RANGE_CODE_HANDLER

Podobně jako u COMMAND_RANGE_CODE_HANDLER se příkazy mapuje z nadřazeného okna.

REFLECTED_COMMAND_RANGE_CODE_HANDLER( idFirst, idLast, code, func )

Parametry

idFirst
[v] Označí začátek souvislého rozsahu identifikátorů ovládacích prvků.

IdLast
[v] Označí konec souvislého rozsahu identifikátorů ovládacích prvků.

kód
[v] Kód oznámení.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

REFLECTED_COMMAND_RANGE_HANDLER

Podobně jako COMMAND_RANGE_HANDLER, ale příkazy map se odrazí z nadřazeného okna.

REFLECTED_COMMAND_RANGE_HANDLER( idFirst, idLast, func )

Parametry

idFirst
[v] Označí začátek souvislého rozsahu identifikátorů ovládacích prvků.

IdLast
[v] Označí konec souvislého rozsahu identifikátorů ovládacích prvků.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

REFLECTED_NOTIFY_CODE_HANDLER

Podobně jako u NOTIFY_CODE_HANDLER se oznámení mapuje z nadřazeného okna.

REFLECTED_NOTIFY_CODE_HANDLER_EX( cd, func )

Parametry

Cd
[v] Kód oznámení.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

REFLECTED_NOTIFY_HANDLER

Podobně jako u NOTIFY_HANDLER se oznámení mapuje z nadřazeného okna.

REFLECTED_NOTIFY_HANDLER( id, cd, func )

Parametry

id
[v] Identifikátor položky nabídky, ovládacího prvku nebo akcelerátoru.

Cd
[v] Kód oznámení.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

REFLECTED_NOTIFY_ID_HANDLER

Podobně jako u NOTIFY_ID_HANDLER se oznámení mapuje z nadřazeného okna.

REFLECTED_NOTIFY_ID_HANDLER( id, func )

Parametry

id
[v] Identifikátor položky nabídky, ovládacího prvku nebo akcelerátoru.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

REFLECTED_NOTIFY_RANGE_CODE_HANDLER

Podobně jako u NOTIFY_RANGE_CODE_HANDLER se oznámení mapuje z nadřazeného okna.

REFLECTED_NOTIFY_RANGE_CODE_HANDLER( idFirst, idLast, cd, func )

Parametry

idFirst
[v] Označí začátek souvislého rozsahu identifikátorů ovládacích prvků.

IdLast
[v] Označí konec souvislého rozsahu identifikátorů ovládacích prvků.

Cd
[v] Kód oznámení.

func
[v] Název funkce obslužné rutiny zprávy.

Požadavky

Hlavička: atlwin.h

REFLECTED_NOTIFY_RANGE_HANDLER

Podobně jako u NOTIFY_RANGE_HANDLER se oznámení mapuje z nadřazeného okna.

REFLECTED_NOTIFY_RANGE_HANDLER( idFirst, idLast, func )

Parametry

idFirst
[v] Označí začátek souvislého rozsahu identifikátorů ovládacích prvků.

IdLast
[v] Označí konec souvislého rozsahu identifikátorů ovládacích prvků.

func
[v] Název funkce obslužné rutiny zprávy.

Viz také

Makra