Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu sınıf, ileti eşlemelerinin dinamik zincirini destekleyen yöntemler sağlar.
Önemli
Bu sınıf ve üyeleri Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.
Sözdizimi
class CDynamicChain
Üyeler
Ortak Oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
| CDynamicChain::CDynamicChain | Oluşturucu. |
| CDynamicChain::~CDynamicChain | Yok edici. |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| CDynamicChain::CallChain | Windows iletisini başka bir nesnenin ileti eşlemesine yönlendirir. |
| CDynamicChain::RemoveChainEntry | Bir ileti eşleme girdisini koleksiyondan kaldırır. |
| CDynamicChain::SetChainEntry | Koleksiyona bir ileti eşleme girdisi ekler veya var olan bir girdiyi değiştirir. |
Açıklamalar
CDynamicChain , windows iletisinin çalışma zamanında başka bir nesnenin ileti eşlemesine yönlendirilmesini sağlayan bir ileti eşlemeleri koleksiyonunu yönetir.
İleti eşlemelerinin dinamik zincirleme desteği eklemek için aşağıdakileri yapın:
sınıfınızı öğesinden
CDynamicChaintüretin. İleti eşlemesinde, başka bir nesnenin varsayılan ileti eşlemesine zincirleme CHAIN_MSG_MAP_DYNAMIC makroyu belirtin.CMessageMap'ten zincirleme yapmak istediğiniz her sınıfı türetin.
CMessageMapbir nesnenin ileti eşlemelerini diğer nesnelerle kullanıma sunmasına izin verir.Hangi nesneye ve hangi ileti eşlemesine zincir uygulamak istediğinizi belirlemek için çağrısı
CDynamicChain::SetChainEntryyapın.
Örneğin, sınıfınızın aşağıdaki gibi tanımlandığını varsayalım:
class CMyChainWnd : public CWindowImpl<CMyChainWnd>,
public CDynamicChain
{
public:
CMyChainWnd() {}
BEGIN_MSG_MAP(CMyChainWnd)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
// dynamically chain to the default
// message map in another object
CHAIN_MSG_MAP_DYNAMIC(1313)
// '1313' identifies the object
// and the message map that will be
// chained to. '1313' is defined
// through the SetChainEntry method
END_MSG_MAP()
LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
// Do some painting code
return 0;
}
LRESULT OnSetFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
İstemci daha sonra öğesini çağırır CMyWindow::SetChainEntry:
myCtl.SetChainEntry(1313, &chainedObj);
burada chainedObj zincirlenmiş nesnedir ve öğesinden CMessageMaptüretilen bir sınıfın örneğidir. Şimdi veya OnSetFocustarafından OnPaint işlenmeyen bir ileti alırsamyCtl, pencere yordamı iletiyi 'nin varsayılan ileti eşlemesine chainedObjyönlendirir.
İleti eşlemesi zincirleme hakkında daha fazla bilgi için "ATL Pencere Sınıfları" makalesindeki İleti Eşlemeleri'ne bakın.
Gereksinimler
Üst bilgi: atlwin.h
CDynamicChain::CallChain
Windows iletisini başka bir nesnenin ileti eşlemesine yönlendirir.
BOOL CallChain(
DWORD dwChainID,
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
LRESULT& lResult);
Parametreler
dwChainID
[in] Zincirlenmiş nesne ve ileti eşlemesiyle ilişkili benzersiz tanımlayıcı.
hWnd
[in] İletiyi alan pencerenin tutamacı.
uMsg
[in] Pencereye gönderilen ileti.
wParam
[in] İletiye özgü ek bilgiler.
lParam
[in] İletiye özgü ek bilgiler.
lResult
[out] İleti işlemenin sonucu.
Dönüş Değeri
İleti tamamen işlenirse TRUE; aksi takdirde YANLIŞ.
Açıklamalar
pencere yordamının çağrısı CallChainiçin, ileti eşlemenizde CHAIN_MSG_MAP_DYNAMIC makroyu belirtmeniz gerekir. Bir örnek için bkz. CDynamicChain'e genel bakış.
CallChain, dwChainID değerini bir nesne ve ileti eşlemesiyle ilişkilendirmek için SetChainEntry'ye önceki bir çağrı gerektirir.
CDynamicChain::CDynamicChain
Oluşturucu.
CDynamicChain();
CDynamicChain::~CDynamicChain
Yok edici.
~CDynamicChain();
Açıklamalar
Ayrılan tüm kaynakları serbesttir.
CDynamicChain::RemoveChainEntry
Belirtilen ileti eşlemesini koleksiyondan kaldırır.
BOOL RemoveChainEntry(DWORD dwChainID);
Parametreler
dwChainID
[in] Zincirlenmiş nesne ve ileti eşlemesiyle ilişkili benzersiz tanımlayıcı. Bu değeri başlangıçta SetChainEntry çağrısıyla tanımlarsınız.
Dönüş Değeri
İleti eşlemesi koleksiyondan başarıyla kaldırılırsa TRUE. Aksi takdirde YANLIŞ.
CDynamicChain::SetChainEntry
Belirtilen ileti eşlemesini koleksiyona ekler.
BOOL SetChainEntry(
DWORD dwChainID,
CMessageMap* pObject,
DWORD dwMsgMapID = 0);
Parametreler
dwChainID
[in] Zincirlenmiş nesne ve ileti eşlemesiyle ilişkili benzersiz tanımlayıcı.
pObject
[in] İleti eşlemesini belirten zincirlenmiş nesneye yönelik bir işaretçi. Bu nesne CMessageMap'ten türetilmelidir.
dwMsgMapID
[in] Zincirlenmiş nesnedeki ileti eşlemesinin tanımlayıcısı. Varsayılan değer, BEGIN_MSG_MAP ile bildirilen varsayılan ileti eşlemesini tanımlayan 0'dır. ALT_MSG_MAP(msgMapID) ile bildirilen alternatif bir ileti eşlemesi belirtmek için geçirinmsgMapID.
Dönüş Değeri
İleti eşlemesi koleksiyona başarıyla eklenirse TRUE. Aksi takdirde YANLIŞ.
Açıklamalar
dwChainID değeri koleksiyonda zaten varsa, ilişkili nesnesi ve ileti eşlemesi sırasıyla pObject ve dwMsgMapID ile değiştirilir. Aksi takdirde, yeni bir giriş eklenir.