Aracılığıyla paylaş


İleti Eşleme Makroları (ATL)

Bu makrolar ileti eşlemelerini ve girdilerini tanımlar.

Veri Akışı Adı Açıklama
ALT_MSG_MAP Alternatif ileti eşlemesinin başlangıcını işaretler.
BEGIN_MSG_MAP Varsayılan ileti eşlemesinin başlangıcını işaretler.
CHAIN_MSG_MAP_ALT Temel sınıfta alternatif bir ileti eşlemesine zincirler.
CHAIN_MSG_MAP_ALT_MEMBER Sınıfının bir veri üyesinde alternatif bir ileti eşlemesine zincirler.
CHAIN_MSG_MAP Temel sınıfta varsayılan ileti eşlemesine zincirler.
CHAIN_MSG_MAP_DYNAMIC Çalışma zamanında başka bir sınıftaki ileti eşlemesine zincirler.
CHAIN_MSG_MAP_MEMBER Sınıfının bir veri üyesinde varsayılan ileti eşlemesine zincirler.
COMMAND_CODE_HANDLER WM_COMMAND iletisini bildirim koduna göre işleyici işleviyle eşler.
COMMAND_HANDLER WM_COMMAND iletisini, bildirim koduna ve menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısına göre bir işleyici işleviyle eşler.
COMMAND_ID_HANDLER WM_COMMAND iletisini, menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısına göre işleyici işleviyle eşler.
COMMAND_RANGE_CODE_HANDLER WM_COMMAND iletisini, bildirim koduna ve bitişik bir denetim tanımlayıcısı aralığına göre işleyici işleviyle eşler.
COMMAND_RANGE_HANDLER WM_COMMAND iletisini, bitişik bir denetim tanımlayıcısı aralığına göre işleyici işleviyle eşler.
DECLARE_EMPTY_MSG_MAP Boş bir ileti eşlemesi uygular.
DEFAULT_REFLECTION_HANDLER Aksi takdirde işlenmemiş yansıtılmış iletiler için varsayılan bir işleyici sağlar.
END_MSG_MAP İleti eşlemesinin sonunu işaretler.
FORWARD_NOTIFICATIONS Bildirim iletilerini üst pencereye iletir.
MESSAGE_HANDLER Windows iletisini bir işleyici işleviyle eşler.
MESSAGE_RANGE_HANDLER Bitişik bir Windows iletileri aralığını bir işleyici işleviyle eşler.
NOTIFY_CODE_HANDLER WM_NOTIFY iletisini bildirim koduna göre bir işleyici işleviyle eşler.
NOTIFY_HANDLER WM_NOTIFY iletisini bildirim koduna ve denetim tanımlayıcısına göre bir işleyici işleviyle eşler.
NOTIFY_ID_HANDLER WM_NOTIFY iletisini denetim tanımlayıcısına göre bir işleyici işleviyle eşler.
NOTIFY_RANGE_CODE_HANDLER WM_NOTIFY iletisini, bildirim koduna ve bitişik bir denetim tanımlayıcısı aralığına göre bir işleyici işleviyle eşler.
NOTIFY_RANGE_HANDLER Bir WM_NOTIFY iletisini, bitişik bir denetim tanımlayıcısı aralığına göre bir işleyici işleviyle eşler.
REFLECT_NOTIFICATIONS Bildirim iletilerini gönderen pencereye geri yansıtır.
REFLECTED_COMMAND_CODE_HANDLER Yansıtılan WM_COMMAND iletisini bildirim koduna göre bir işleyici işleviyle eşler.
REFLECTED_COMMAND_HANDLER Yansıtılan WM_COMMAND iletisini, bildirim koduna ve menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısına göre bir işleyici işleviyle eşler.
REFLECTED_COMMAND_ID_HANDLER Yansıtılan WM_COMMAND iletisini, menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısına göre bir işleyici işleviyle eşler.
REFLECTED_COMMAND_RANGE_CODE_HANDLER Yansıtılan bir WM_COMMAND iletisini, bildirim koduna ve bitişik bir denetim tanımlayıcısı aralığına göre bir işleyici işleviyle eşler.
REFLECTED_COMMAND_RANGE_HANDLER Yansıtılan WM_COMMAND iletisini, bitişik bir denetim tanımlayıcısı aralığına göre bir işleyici işleviyle eşler.
REFLECTED_NOTIFY_CODE_HANDLER Yansıtılan WM_NOTIFY iletisini bildirim koduna göre bir işleyici işleviyle eşler.
REFLECTED_NOTIFY_HANDLER Yansıtılan WM_NOTIFY iletisini bildirim koduna ve denetim tanımlayıcısına göre bir işleyici işleviyle eşler.
REFLECTED_NOTIFY_ID_HANDLER Yansıtılan WM_NOTIFY iletisini denetim tanımlayıcısına göre bir işleyici işleviyle eşler.
REFLECTED_NOTIFY_RANGE_CODE_HANDLER Yansıtılan WM_NOTIFY iletisini, bildirim koduna ve bitişik bir denetim tanımlayıcı aralığına göre bir işleyici işleviyle eşler.
REFLECTED_NOTIFY_RANGE_HANDLER Yansıtılan WM_NOTIFY iletisini, bitişik bir denetim tanımlayıcısı aralığına göre bir işleyici işleviyle eşler.

Gereksinimler

Üst bilgi: atlwin.h

ALT_MSG_MAP

Alternatif ileti eşlemesinin başlangıcını işaretler.

ALT_MSG_MAP(msgMapID)

Parametreler

msgMapID
[in] İleti eşleme tanımlayıcısı.

Açıklamalar

ATL, her ileti eşlemeyi bir sayıya göre tanımlar. Varsayılan ileti eşlemesi (BEGIN_MSG_MAP makroyla bildirilir) 0 tarafından tanımlanır. Alternatif bir ileti eşlemesi msgMapID ile tanımlanır.

İleti eşlemeleri, bir pencereye gönderilen iletileri işlemek için kullanılır. Örneğin, CContainedWindow içeren nesnede bir ileti eşlemesinin tanımlayıcısını belirtmenize olanak tanır. CContainedWindow::WindowProc , kapsanan pencerenin iletilerini uygun işleyici işlevine veya başka bir ileti eşlemesine yönlendirmek için bu ileti eşlemesini kullanır. İşleyici işlevlerini bildiren makroların listesi için bkz . BEGIN_MSG_MAP.

her zaman BEGIN_MSG_MAP ile bir ileti haritası başlatın. Ardından, sonraki alternatif ileti eşlemelerini bildirebilirsiniz.

END_MSG_MAP makro, ileti eşlemesinin sonunu işaretler. her zaman BEGIN_MSG_MAP ve END_MSG_MAP tam olarak bir örneği olduğunu unutmayın.

ATL'de ileti eşlemelerini kullanma hakkında daha fazla bilgi için bkz . İleti Eşlemeleri.

Örnek

Aşağıdaki örnekte, her biri bir işleyici işlevi içeren varsayılan ileti eşlemesi ve bir alternatif ileti eşlemesi gösterilmektedir:

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

Sonraki örnekte iki alternatif ileti eşlemesi gösterilmektedir. Varsayılan ileti eşlemesi boş.

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()

Gereksinimler

Üst bilgi: atlwin.h

BEGIN_MSG_MAP

Varsayılan ileti eşlemesinin başlangıcını işaretler.

BEGIN_MSG_MAP(theClass)

Parametreler

theClass
[in] İleti eşlemesini içeren sınıfın adı.

Açıklamalar

CWindowImpl::WindowProc , pencereye gönderilen iletileri işlemek için varsayılan ileti eşlemesini kullanır. İleti eşlemesi, iletileri uygun işleyici işlevine veya başka bir ileti eşlemesine yönlendirir.

Aşağıdaki makrolar bir iletiyi işleyici işleviyle eşler. Bu işlevClass içinde tanımlanmalıdır.

Makro Açıklama
MESSAGE_HANDLER Windows iletisini bir işleyici işleviyle eşler.
MESSAGE_RANGE_HANDLER Bitişik bir Windows iletileri aralığını bir işleyici işleviyle eşler.
COMMAND_HANDLER WM_COMMAND iletisini, bildirim koduna ve menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısına göre bir işleyici işleviyle eşler.
COMMAND_ID_HANDLER WM_COMMAND iletisini, menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısına göre işleyici işleviyle eşler.
COMMAND_CODE_HANDLER WM_COMMAND iletisini bildirim koduna göre işleyici işleviyle eşler.
COMMAND_RANGE_HANDLER Menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısına bağlı olarak, bitişik bir WM_COMMAND ileti aralığını bir işleyici işleviyle eşler.
NOTIFY_HANDLER WM_NOTIFY iletisini bildirim koduna ve denetim tanımlayıcısına göre bir işleyici işleviyle eşler.
NOTIFY_ID_HANDLER WM_NOTIFY iletisini denetim tanımlayıcısına göre bir işleyici işleviyle eşler.
NOTIFY_CODE_HANDLER WM_NOTIFY iletisini bildirim koduna göre bir işleyici işleviyle eşler.
NOTIFY_RANGE_HANDLER Bir WM_NOTIFY iletilerinin bitişik aralığını denetim tanımlayıcısına göre bir işleyici işleviyle eşler.

Aşağıdaki makrolar iletileri başka bir ileti eşlemesine yönlendirir. Bu işleme "zincirleme" adı verilir.

Makro Açıklama
CHAIN_MSG_MAP Temel sınıfta varsayılan ileti eşlemesine zincirler.
CHAIN_MSG_MAP_MEMBER Sınıfının bir veri üyesinde varsayılan ileti eşlemesine zincirler.
CHAIN_MSG_MAP_ALT Temel sınıfta alternatif bir ileti eşlemesine zincirler.
CHAIN_MSG_MAP_ALT_MEMBER Sınıfının bir veri üyesinde alternatif bir ileti eşlemesine zincirler.
CHAIN_MSG_MAP_DYNAMIC Çalışma zamanında başka bir sınıftaki varsayılan ileti eşlemesine zincirler.

Aşağıdaki makrolar üst penceredeki "yansıtılmış" iletileri yönlendirir. Örneğin, bir denetim normalde işlem için üst penceresine bildirim iletileri gönderir, ancak üst pencere iletiyi denetime geri yansıtabilir.

Makro Açıklama
REFLECTED_COMMAND_HANDLER Yansıtılan WM_COMMAND iletisini, bildirim koduna ve menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısına göre bir işleyici işleviyle eşler.
REFLECTED_COMMAND_ID_HANDLER Yansıtılan WM_COMMAND iletisini, menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısına göre bir işleyici işleviyle eşler.
REFLECTED_COMMAND_CODE_HANDLER Yansıtılan WM_COMMAND iletisini bildirim koduna göre bir işleyici işleviyle eşler.
REFLECTED_COMMAND_RANGE_HANDLER Yansıtılan WM_COMMAND iletisini, bitişik bir denetim tanımlayıcısı aralığına göre bir işleyici işleviyle eşler.
REFLECTED_COMMAND_RANGE_CODE_HANDLER Yansıtılan bir WM_COMMAND iletisini, bildirim koduna ve bitişik bir denetim tanımlayıcısı aralığına göre bir işleyici işleviyle eşler.
REFLECTED_NOTIFY_HANDLER Yansıtılan WM_NOTIFY iletisini bildirim koduna ve denetim tanımlayıcısına göre bir işleyici işleviyle eşler.
REFLECTED_NOTIFY_ID_HANDLER Yansıtılan WM_NOTIFY iletisini denetim tanımlayıcısına göre bir işleyici işleviyle eşler.
REFLECTED_NOTIFY_CODE_HANDLER Yansıtılan WM_NOTIFY iletisini bildirim koduna göre bir işleyici işleviyle eşler.
REFLECTED_NOTIFY_RANGE_HANDLER Yansıtılan WM_NOTIFY iletisini, bitişik bir denetim tanımlayıcısı aralığına göre bir işleyici işleviyle eşler.
REFLECTED_NOTIFY_RANGE_CODE_HANDLER Yansıtılan WM_NOTIFY iletisini, bildirim koduna ve bitişik bir denetim tanımlayıcı aralığına göre bir işleyici işleviyle eşler.

Örnek

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;   
   }
};

Bir CMyExtWindow nesne WM_PAINT iletisi aldığında, ileti gerçek işleme için yönlendirilir CMyExtWindow::OnPaint . İletinin daha fazla işlenmesi gerektiğini belirtirse OnPaint , ileti içindeki CMyBaseWindowvarsayılan ileti eşlemesine yönlendirilir.

Varsayılan ileti eşlemesine ek olarak, ALT_MSG_MAP ile alternatif bir ileti eşlemesi tanımlayabilirsiniz. her zaman BEGIN_MSG_MAP ile bir ileti haritası başlatın. Ardından, sonraki alternatif ileti eşlemelerini bildirebilirsiniz. Aşağıdaki örnekte, her biri bir işleyici işlevi içeren varsayılan ileti eşlemesi ve bir alternatif ileti eşlemesi gösterilmektedir:

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

Sonraki örnekte iki alternatif ileti eşlemesi gösterilmektedir. Varsayılan ileti eşlemesi boş.

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()

END_MSG_MAP makro, ileti eşlemesinin sonunu işaretler. her zaman BEGIN_MSG_MAP ve END_MSG_MAP tam olarak bir örneği olduğunu unutmayın.

ATL'de ileti eşlemelerini kullanma hakkında daha fazla bilgi için bkz . İleti Eşlemeleri.

Gereksinimler

Üst bilgi: atlwin.h

CHAIN_MSG_MAP_ALT

İleti eşlemesinde bir girdi tanımlar.

CHAIN_MSG_MAP_ALT(theChainClass, msgMapID)

Parametreler

TheChainClass
[in] İleti eşlemesini içeren temel sınıfın adı.

msgMapID
[in] İleti eşleme tanımlayıcısı.

Açıklamalar

CHAIN_MSG_MAP_ALT, iletileri temel sınıftaki alternatif bir ileti eşlemesine yönlendirir. Bu alternatif ileti eşlemesini ALT_MSG_MAP(msgMapID) ile bildirmiş olmanız gerekir. İletileri bir temel sınıfın varsayılan ileti eşlemesine yönlendirmek için (BEGIN_MSG_MAP ile bildirilmiş), CHAIN_MSG_MAP kullanın. Bir örnek için bkz . CHAIN_MSG_MAP.

Not

her zaman BEGIN_MSG_MAP ile bir ileti haritası başlatın. Daha sonra ALT_MSG_MAP ile sonraki alternatif ileti eşlemelerini bildirebilirsiniz. END_MSG_MAP makro, ileti eşlemesinin sonunu işaretler. Her ileti eşlemesinde tam olarak bir BEGIN_MSG_MAP ve END_MSG_MAP örneği olmalıdır.

ATL'de ileti eşlemelerini kullanma hakkında daha fazla bilgi için bkz . İleti Eşlemeleri.

Gereksinimler

Üst bilgi: atlwin.h

CHAIN_MSG_MAP_ALT_MEMBER

İleti eşlemesinde bir girdi tanımlar.

CHAIN_MSG_MAP_ALT_MEMBER(theChainMember, msgMapID)

Parametreler

TheChainMember
[in] İleti eşlemesini içeren veri üyesinin adı.

msgMapID
[in] İleti eşleme tanımlayıcısı.

Açıklamalar

CHAIN_MSG_MAP_ALT_MEMBER, iletileri veri üyesindeki alternatif bir ileti eşlemesine yönlendirir. Bu alternatif ileti eşlemesini ALT_MSG_MAP(msgMapID) ile bildirmiş olmanız gerekir. İletileri bir veri üyesinin varsayılan ileti eşlemesine yönlendirmek için (BEGIN_MSG_MAP ile bildirilmiş), CHAIN_MSG_MAP_MEMBER kullanın. Bir örnek için bkz . CHAIN_MSG_MAP_MEMBER.

Not

her zaman BEGIN_MSG_MAP ile bir ileti haritası başlatın. Daha sonra ALT_MSG_MAP ile sonraki alternatif ileti eşlemelerini bildirebilirsiniz. END_MSG_MAP makro, ileti eşlemesinin sonunu işaretler. Her ileti eşlemesinde tam olarak bir BEGIN_MSG_MAP ve END_MSG_MAP örneği olmalıdır.

ATL'de ileti eşlemelerini kullanma hakkında daha fazla bilgi için bkz . İleti Eşlemeleri.

Gereksinimler

Üst bilgi: atlwin.h

CHAIN_MSG_MAP

İleti eşlemesinde bir girdi tanımlar.

CHAIN_MSG_MAP(theChainClass)

Parametreler

TheChainClass
[in] İleti eşlemesini içeren temel sınıfın adı.

Açıklamalar

CHAIN_MSG_MAP iletileri temel sınıfın varsayılan ileti eşlemesine yönlendirir (BEGIN_MSG_MAP ile bildirilmiş). İletileri bir temel sınıfın alternatif ileti eşlemesine yönlendirmek için (ALT_MSG_MAP ile bildirilmiş), CHAIN_MSG_MAP_ALT kullanın.

Not

her zaman BEGIN_MSG_MAP ile bir ileti haritası başlatın. Daha sonra ALT_MSG_MAP ile sonraki alternatif ileti eşlemelerini bildirebilirsiniz. END_MSG_MAP makro, ileti eşlemesinin sonunu işaretler. Her ileti eşlemesinde tam olarak bir BEGIN_MSG_MAP ve END_MSG_MAP örneği olmalıdır.

ATL'de ileti eşlemelerini kullanma hakkında daha fazla bilgi için bkz . İleti Eşlemeleri.

Örnek

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;   
   }
};

Bu örnekte aşağıdakiler gösterilmektedir:

  • Pencere yordamı 'nin varsayılan ileti eşlemesini kullanıyorsa CMyClassve OnPaint bir iletiyi işlemezse, ileti işlenmek üzere 'nin varsayılan ileti eşlemesine CMyBaseClassyönlendirilir.

  • Bir pencere yordamı içindeki CMyClassilk alternatif ileti eşlemesini kullanıyorsa, tüm iletiler 'in varsayılan ileti eşlemesine CMyBaseClassyönlendirilir.

  • Pencere yordamı 'nin ikinci alternatif ileti eşlemesini kullanıyorsa CMyClassve OnChar bir iletiyi işlemiyorsa, ileti içinde CMyBaseClassbelirtilen alternatif ileti eşlemesine yönlendirilir. CMyBaseClass ALT_MSG_MAP(1) ile bu ileti eşlemesi bildirmiş olmalıdır.

Gereksinimler

Üst bilgi: atlwin.h

CHAIN_MSG_MAP_DYNAMIC

İleti eşlemesinde bir girdi tanımlar.

CHAIN_MSG_MAP_DYNAMIC(dynaChainID)

Parametreler

dynaChainID
[in] Nesnenin ileti eşlemesinin benzersiz tanımlayıcısı.

Açıklamalar

CHAIN_MSG_MAP_DYNAMIC, çalışma zamanında iletileri başka bir nesnedeki varsayılan ileti eşlemesine yönlendirir. Nesnesi ve ileti eşlemesi, CDynamicChain::SetChainEntry aracılığıyla tanımladığınız dynaChainID ile ilişkilendirilir. CHAIN_MSG_MAP_DYNAMIC kullanmak için sınıfınızı öğesinden CDynamicChain türetmelisiniz. Bir örnek için bkz. CDynamicChain'e genel bakış.

Not

her zaman BEGIN_MSG_MAP ile bir ileti haritası başlatın. Daha sonra ALT_MSG_MAP ile sonraki alternatif ileti eşlemelerini bildirebilirsiniz. END_MSG_MAP makro, ileti eşlemesinin sonunu işaretler. Her ileti eşlemesinde tam olarak bir BEGIN_MSG_MAP ve END_MSG_MAP örneği olmalıdır.

ATL'de ileti eşlemelerini kullanma hakkında daha fazla bilgi için bkz . İleti Eşlemeleri.

Gereksinimler

Üst bilgi: atlwin.h

CHAIN_MSG_MAP_MEMBER

İleti eşlemesinde bir girdi tanımlar.

CHAIN_MSG_MAP_MEMBER(theChainMember)

Parametreler

TheChainMember
[in] İleti eşlemesini içeren veri üyesinin adı.

Açıklamalar

CHAIN_MSG_MAP_MEMBER, iletileri bir veri üyesinin varsayılan ileti eşlemesine (BEGIN_MSG_MAP ile bildirilmiş) yönlendirir. İletileri bir veri üyesinin alternatif ileti eşlemesine yönlendirmek için (ALT_MSG_MAP ile bildirilmiş), CHAIN_MSG_MAP_ALT_MEMBER kullanın.

Not

her zaman BEGIN_MSG_MAP ile bir ileti haritası başlatın. Daha sonra ALT_MSG_MAP ile sonraki alternatif ileti eşlemelerini bildirebilirsiniz. END_MSG_MAP makro, ileti eşlemesinin sonunu işaretler. Her ileti eşlemesinde tam olarak bir BEGIN_MSG_MAP ve END_MSG_MAP örneği olmalıdır.

ATL'de ileti eşlemelerini kullanma hakkında daha fazla bilgi için bkz . İleti Eşlemeleri.

Örnek

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;   
   }
};

Bu örnekte aşağıdakiler gösterilmektedir:

  • Pencere yordamı 'nin varsayılan ileti eşlemesini kullanıyorsa CMyClassve OnPaint bir iletiyi işlemezse, ileti işlenmek üzere 'nin varsayılan ileti eşlemesine m_objyönlendirilir.

  • Bir pencere yordamı içindeki CMyClassilk alternatif ileti eşlemesini kullanıyorsa, tüm iletiler 'in varsayılan ileti eşlemesine m_objyönlendirilir.

  • Pencere yordamı 'nin ikinci alternatif ileti eşlemesini kullanıyorsa CMyClassve OnChar bir iletiyi işlemiyorsa, ileti belirtilen alternatif ileti eşlemesine m_objyönlendirilir. Sınıfın CMyContainedClass bu ileti eşlemesini ALT_MSG_MAP(1) ile bildirmiş olması gerekir.

Gereksinimler

Üst bilgi: atlwin.h

COMMAND_CODE_HANDLER

COMMAND_HANDLER benzer, ancak WM_COMMAND iletisini yalnızca bildirim koduna göre eşler.

COMMAND_CODE_HANDLER(code, func)

Parametreler

kod
[in] Bildirim kodu.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

COMMAND_HANDLER

İleti eşlemesinde bir girdi tanımlar.

COMMAND_HANDLER(id, code, func)

Parametreler

id
[in] Menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısı.

kod
[in] Bildirim kodu.

func
[in] İleti işleyici işlevinin adı.

Açıklamalar

COMMAND_HANDLER, bildirim koduna ve denetim tanımlayıcısına göre WM_COMMAND bir iletiyi belirtilen işleyici işlevine eşler. Örneğin:

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*/);

COMMAND_HANDLER makrosunda belirtilen herhangi bir işlev aşağıdaki gibi tanımlanmalıdır:

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

İleti eşlemesi çağrılmadan önce CommandHandler TRUE olarak ayarlanırbHandled. İletiyi tam olarak işlemezse CommandHandler , iletinin daha fazla işlenmesi gerektiğini belirtmek için YANLIŞ olarak ayarlanmalıdır bHandled .

Not

her zaman BEGIN_MSG_MAP ile bir ileti haritası başlatın. Daha sonra ALT_MSG_MAP ile sonraki alternatif ileti eşlemelerini bildirebilirsiniz. END_MSG_MAP makro, ileti eşlemesinin sonunu işaretler. Her ileti eşlemesinde tam olarak bir BEGIN_MSG_MAP ve END_MSG_MAP örneği olmalıdır.

COMMAND_HANDLER ek olarak, MESSAGE_HANDLER kullanarak WM_COMMAND bir iletiyi tanımlayıcıya veya koda bakılmaksızın eşleyebilirsiniz. Bu durumda, MESSAGE_HANDLER(WM_COMMAND, OnHandlerFunction) tüm WM_COMMAND iletilerini adresine OnHandlerFunctionyönlendirir.

ATL'de ileti eşlemelerini kullanma hakkında daha fazla bilgi için bkz . İleti Eşlemeleri.

Gereksinimler

Üst bilgi: atlwin.h

COMMAND_ID_HANDLER

COMMAND_HANDLER benzer, ancak WM_COMMAND bir iletiyi yalnızca menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısına göre eşler.

COMMAND_ID_HANDLER(id, func)

Parametreler

id
[in] İletiyi gönderen menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısı.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

COMMAND_RANGE_CODE_HANDLER

COMMAND_RANGE_HANDLER benzer, ancak WM_COMMAND iletileri bir dizi denetimden belirli bir bildirim koduyla tek bir işleyici işlevine eşler.

COMMAND_RANGE_CODE_HANDLER(idFirst, idLast, code, func)

Parametreler

idFirst
[in] Bitişik bir denetim tanımlayıcısı aralığının başlangıcını işaretler.

idLast
[in] Bitişik bir denetim tanımlayıcısı aralığının sonunu işaretler.

kod
[in] Bildirim kodu.

func
[in] İleti işleyici işlevinin adı.

Açıklamalar

Bu aralık, iletiyi gönderen menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısını temel alır.

Gereksinimler

Üst bilgi: atlwin.h

COMMAND_RANGE_HANDLER

COMMAND_HANDLER benzer, ancak WM_COMMAND iletileri bir dizi denetimden tek bir işleyici işlevine eşler.

COMMAND_RANGE_HANDLER( idFirst, idLast, func)

Parametreler

idFirst
[in] Bitişik bir denetim tanımlayıcısı aralığının başlangıcını işaretler.

idLast
[in] Bitişik bir denetim tanımlayıcısı aralığının sonunu işaretler.

func
[in] İleti işleyici işlevinin adı.

Açıklamalar

Bu aralık, iletiyi gönderen menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısını temel alır.

Gereksinimler

Üst bilgi: atlwin.h

DECLARE_EMPTY_MSG_MAP

Boş bir ileti eşlemesi bildirir.

DECLARE_EMPTY_MSG_MAP()

Açıklamalar

DECLARE_EMPTY_MSG_MAP, makroları BEGIN_MSG_MAP çağıran ve boş bir ileti eşlemesi oluşturmak için END_MSG_MAP kullanışlı bir makrodur:

BEGIN_MSG_MAP(CExample)
END_MSG_MAP()

DEFAULT_REFLECTION_HANDLER

Yansıtılan iletileri alacak alt pencere (denetim) için varsayılan bir işleyici sağlar; işleyicisi, işlenmeyen iletileri 'ye DefWindowProcdüzgün bir şekilde geçirir.

DEFAULT_REFLECTION_HANDLER()

Gereksinimler

Üst bilgi: atlwin.h

END_MSG_MAP

İleti eşlemesinin sonunu işaretler.

END_MSG_MAP()

Açıklamalar

İleti eşlemesinin başlangıcını işaretlemek için her zaman BEGIN_MSG_MAP makroyu kullanın. sonraki alternatif ileti eşlemelerini bildirmek için ALT_MSG_MAP kullanın.

her zaman BEGIN_MSG_MAP ve END_MSG_MAP tam olarak bir örneği olduğunu unutmayın.

ATL'de ileti eşlemelerini kullanma hakkında daha fazla bilgi için bkz . İleti Eşlemeleri.

Örnek

Aşağıdaki örnekte, her biri bir işleyici işlevi içeren varsayılan ileti eşlemesi ve bir alternatif ileti eşlemesi gösterilmektedir:

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

Sonraki örnekte iki alternatif ileti eşlemesi gösterilmektedir. Varsayılan ileti eşlemesi boş.

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()

Gereksinimler

Üst bilgi: atlwin.h

FORWARD_NOTIFICATIONS

Bildirim iletilerini üst pencereye iletir.

FORWARD_NOTIFICATIONS()

Açıklamalar

bu makronun ileti eşlemenizin bir parçası olarak belirtin.

Gereksinimler

Üst bilgi: atlwin.h

MESSAGE_HANDLER

İleti eşlemesinde bir girdi tanımlar.

MESSAGE_HANDLER( msg, func )

Parametreler

Msg
[in] Windows iletisi.

func
[in] İleti işleyici işlevinin adı.

Açıklamalar

MESSAGE_HANDLER bir Windows iletisini belirtilen işleyici işlevine eşler.

MESSAGE_HANDLER makroda belirtilen tüm işlevler aşağıdaki gibi tanımlanmalıdır:

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

İleti eşlemesi çağrılmadan önce MessageHandler TRUE olarak ayarlanırbHandled. İletiyi tam olarak işlemezse MessageHandler , iletinin daha fazla işlenmesi gerektiğini belirtmek için YANLIŞ olarak ayarlanmalıdır bHandled .

Not

her zaman BEGIN_MSG_MAP ile bir ileti haritası başlatın. Daha sonra ALT_MSG_MAP ile sonraki alternatif ileti eşlemelerini bildirebilirsiniz. END_MSG_MAP makro, ileti eşlemesinin sonunu işaretler. Her ileti eşlemesinde tam olarak bir BEGIN_MSG_MAP ve END_MSG_MAP örneği olmalıdır.

MESSAGE_HANDLER ek olarak, WM_COMMAND ve WM_NOTIFY iletileri eşlemek için sırasıyla COMMAND_HANDLER ve NOTIFY_HANDLER kullanabilirsiniz.

ATL'de ileti eşlemelerini kullanma hakkında daha fazla bilgi için bkz . İleti Eşlemeleri.

Örnek

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;   
   }
};

Gereksinimler

Üst bilgi: atlwin.h

MESSAGE_RANGE_HANDLER

MESSAGE_HANDLER benzer, ancak bir dizi Windows iletisini tek bir işleyici işleviyle eşler.

MESSAGE_RANGE_HANDLER( msgFirst, msgLast, func )

Parametreler

msgFirst
[in] Bitişik bir ileti aralığının başlangıcını işaretler.

msgLast
[in] Bitişik bir ileti aralığının sonunu işaretler.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

NOTIFY_CODE_HANDLER

NOTIFY_HANDLER benzer, ancak WM_NOTIFY bir iletiyi yalnızca bildirim koduna göre eşler.

NOTIFY_CODE_HANDLER(cd, func)

Parametreler

CD
[in] Bildirim kodu.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

NOTIFY_HANDLER

İleti eşlemesinde bir girdi tanımlar.

NOTIFY_HANDLER( id, cd, func )

Parametreler

id
[in] İletiyi gönderen denetimin tanımlayıcısı.

CD
[in] Bildirim kodu.

func
[in] İleti işleyici işlevinin adı.

Açıklamalar

NOTIFY_HANDLER, bildirim koduna ve denetim tanımlayıcısına göre WM_NOTIFY bir iletiyi belirtilen işleyici işlevine eşler.

NOTIFY_HANDLER makrosunda belirtilen herhangi bir işlev aşağıdaki gibi tanımlanmalıdır:

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

İleti eşlemesi çağrılmadan önce NotifyHandler TRUE olarak ayarlanırbHandled. İletiyi tam olarak işlemezse NotifyHandler , iletinin daha fazla işlenmesi gerektiğini belirtmek için YANLIŞ olarak ayarlanmalıdır bHandled .

Not

her zaman BEGIN_MSG_MAP ile bir ileti haritası başlatın. Daha sonra ALT_MSG_MAP ile sonraki alternatif ileti eşlemelerini bildirebilirsiniz. END_MSG_MAP makro, ileti eşlemesinin sonunu işaretler. Her ileti eşlemesinde tam olarak bir BEGIN_MSG_MAP ve END_MSG_MAP örneği olmalıdır.

NOTIFY_HANDLER ek olarak, MESSAGE_HANDLER kullanarak WM_NOTIFY bir iletiyi tanımlayıcıya veya koda bakılmaksızın eşleyebilirsiniz. Bu durumda, MESSAGE_HANDLER(WM_NOTIFY, OnHandlerFunction) tüm WM_NOTIFY iletilerini adresine OnHandlerFunctionyönlendirir.

ATL'de ileti eşlemelerini kullanma hakkında daha fazla bilgi için bkz . İleti Eşlemeleri.

Örnek

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*/);
};

Gereksinimler

Üst bilgi: atlwin.h

NOTIFY_ID_HANDLER

NOTIFY_HANDLER benzer, ancak WM_NOTIFY iletisini yalnızca denetim tanımlayıcısına göre eşler.

NOTIFY_ID_HANDLER( id, func )

Parametreler

id
[in] İletiyi gönderen denetimin tanımlayıcısı.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

NOTIFY_RANGE_CODE_HANDLER

NOTIFY_RANGE_HANDLER benzer, ancak WM_NOTIFY iletileri bir dizi denetimden belirli bir bildirim koduyla tek bir işleyici işlevine eşler.

NOTIFY_RANGE_CODE_HANDLER( idFirst, idLast, cd, func )

Parametreler

idFirst
[in] Bitişik bir denetim tanımlayıcısı aralığının başlangıcını işaretler.

idLast
[in] Bitişik bir denetim tanımlayıcısı aralığının sonunu işaretler.

CD
[in] Bildirim kodu.

func
[in] İleti işleyici işlevinin adı.

Açıklamalar

Bu aralık, iletiyi gönderen denetimin tanımlayıcısını temel alır.

Gereksinimler

Üst bilgi: atlwin.h

NOTIFY_RANGE_HANDLER

NOTIFY_HANDLER benzer, ancak bir dizi denetimden gelen WM_NOTIFY iletileri tek bir işleyici işleviyle eşler.

NOTIFY_RANGE_HANDLER( idFirst, idLast, func )

Parametreler

idFirst
[in] Bitişik bir denetim tanımlayıcısı aralığının başlangıcını işaretler.

idLast
[in] Bitişik bir denetim tanımlayıcısı aralığının sonunu işaretler.

func
[in] İleti işleyici işlevinin adı.

Açıklamalar

Bu aralık, iletiyi gönderen denetimin tanımlayıcısını temel alır.

Gereksinimler

Üst bilgi: atlwin.h

REFLECT_NOTIFICATIONS

Bildirim iletilerini gönderen alt pencereye (denetim) yansıtır.

REFLECT_NOTIFICATIONS()

Açıklamalar

Bu makroyu üst pencerenin ileti eşlemesinin bir parçası olarak belirtin.

Gereksinimler

Üst bilgi: atlwin.h

REFLECTED_COMMAND_CODE_HANDLER

COMMAND_CODE_HANDLER benzer, ancak üst pencereden yansıtılan komutları eşler.

REFLECTED_COMMAND_CODE_HANDLER( code, func )

Parametreler

kod
[in] Bildirim kodu.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

REFLECTED_COMMAND_HANDLER

COMMAND_HANDLER benzer, ancak üst pencereden yansıtılan komutları eşler.

REFLECTED_COMMAND_HANDLER( id, code, func )

Parametreler

id
[in] Menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısı.

kod
[in] Bildirim kodu.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

REFLECTED_COMMAND_ID_HANDLER

COMMAND_ID_HANDLER benzer, ancak üst pencereden yansıtılan komutları eşler.

REFLECTED_COMMAND_ID_HANDLER( id, func )

Parametreler

id
[in] Menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısı.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

REFLECTED_COMMAND_RANGE_CODE_HANDLER

COMMAND_RANGE_CODE_HANDLER benzer, ancak üst pencereden yansıtılan komutları eşler.

REFLECTED_COMMAND_RANGE_CODE_HANDLER( idFirst, idLast, code, func )

Parametreler

idFirst
[in] Bitişik bir denetim tanımlayıcısı aralığının başlangıcını işaretler.

idLast
[in] Bitişik bir denetim tanımlayıcısı aralığının sonunu işaretler.

kod
[in] Bildirim kodu.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

REFLECTED_COMMAND_RANGE_HANDLER

COMMAND_RANGE_HANDLER benzer, ancak üst pencereden yansıtılan komutları eşler.

REFLECTED_COMMAND_RANGE_HANDLER( idFirst, idLast, func )

Parametreler

idFirst
[in] Bitişik bir denetim tanımlayıcısı aralığının başlangıcını işaretler.

idLast
[in] Bitişik bir denetim tanımlayıcısı aralığının sonunu işaretler.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

REFLECTED_NOTIFY_CODE_HANDLER

NOTIFY_CODE_HANDLER benzer, ancak üst pencereden yansıtılan bildirimleri eşler.

REFLECTED_NOTIFY_CODE_HANDLER_EX( cd, func )

Parametreler

CD
[in] Bildirim kodu.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

REFLECTED_NOTIFY_HANDLER

NOTIFY_HANDLER benzer, ancak üst pencereden yansıtılan bildirimleri eşler.

REFLECTED_NOTIFY_HANDLER( id, cd, func )

Parametreler

id
[in] Menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısı.

CD
[in] Bildirim kodu.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

REFLECTED_NOTIFY_ID_HANDLER

NOTIFY_ID_HANDLER benzer, ancak üst pencereden yansıtılan bildirimleri eşler.

REFLECTED_NOTIFY_ID_HANDLER( id, func )

Parametreler

id
[in] Menü öğesinin, denetimin veya hızlandırıcının tanımlayıcısı.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

REFLECTED_NOTIFY_RANGE_CODE_HANDLER

NOTIFY_RANGE_CODE_HANDLER benzer, ancak üst pencereden yansıtılan bildirimleri eşler.

REFLECTED_NOTIFY_RANGE_CODE_HANDLER( idFirst, idLast, cd, func )

Parametreler

idFirst
[in] Bitişik bir denetim tanımlayıcısı aralığının başlangıcını işaretler.

idLast
[in] Bitişik bir denetim tanımlayıcısı aralığının sonunu işaretler.

CD
[in] Bildirim kodu.

func
[in] İleti işleyici işlevinin adı.

Gereksinimler

Üst bilgi: atlwin.h

REFLECTED_NOTIFY_RANGE_HANDLER

NOTIFY_RANGE_HANDLER benzer, ancak üst pencereden yansıtılan bildirimleri eşler.

REFLECTED_NOTIFY_RANGE_HANDLER( idFirst, idLast, func )

Parametreler

idFirst
[in] Bitişik bir denetim tanımlayıcısı aralığının başlangıcını işaretler.

idLast
[in] Bitişik bir denetim tanımlayıcısı aralığının sonunu işaretler.

func
[in] İleti işleyici işlevinin adı.

Ayrıca bkz.

Makrolar