Aracılığıyla paylaş


CDynamicChain Sınıfı

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. CMessageMap bir 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::SetChainEntry yapı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.

Ayrıca bkz.

CWindowImpl Sınıfı
Sınıfa Genel Bakış