İ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 CMyBaseWindow
varsayı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
CMyClass
veOnPaint
bir iletiyi işlemezse, ileti işlenmek üzere 'nin varsayılan ileti eşlemesineCMyBaseClass
yönlendirilir.Bir pencere yordamı içindeki
CMyClass
ilk alternatif ileti eşlemesini kullanıyorsa, tüm iletiler 'in varsayılan ileti eşlemesineCMyBaseClass
yönlendirilir.Pencere yordamı 'nin ikinci alternatif ileti eşlemesini kullanıyorsa
CMyClass
veOnChar
bir iletiyi işlemiyorsa, ileti içindeCMyBaseClass
belirtilen 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
CMyClass
veOnPaint
bir iletiyi işlemezse, ileti işlenmek üzere 'nin varsayılan ileti eşlemesinem_obj
yönlendirilir.Bir pencere yordamı içindeki
CMyClass
ilk alternatif ileti eşlemesini kullanıyorsa, tüm iletiler 'in varsayılan ileti eşlemesinem_obj
yönlendirilir.Pencere yordamı 'nin ikinci alternatif ileti eşlemesini kullanıyorsa
CMyClass
veOnChar
bir iletiyi işlemiyorsa, ileti belirtilen alternatif ileti eşlemesinem_obj
yönlendirilir. SınıfınCMyContainedClass
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 OnHandlerFunction
yö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 DefWindowProc
dü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 OnHandlerFunction
yö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ı.