Share via


CDynamicChain-klasse

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Deze klasse biedt methoden voor het dynamisch koppelen van berichttoewijzingen.

Belangrijk

Deze klasse en de bijbehorende leden kunnen niet worden gebruikt in toepassingen die worden uitgevoerd in Windows Runtime.

Syntaxis

class CDynamicChain

Leden

Openbare constructors

Naam Description
CDynamicChain::CDynamicChain De constructor.
CDynamicChain::~CDynamicChain De destructor.

Openbare methoden

Naam Description
CDynamicChain::CallChain Stuurt een Windows-bericht door naar de berichttoewijzing van een ander object.
CDynamicChain::RemoveChainEntry Hiermee verwijdert u een berichtkaartvermelding uit de verzameling.
CDynamicChain::SetChainEntry Hiermee voegt u een berichttoewijzingsvermelding toe aan de verzameling of wijzigt u een bestaande vermelding.

Opmerkingen

CDynamicChain beheert een verzameling berichttoewijzingen, waardoor een Windows-bericht tijdens runtime kan worden omgeleid naar de berichttoewijzing van een ander object.

Ga als volgt te werk om ondersteuning toe te voegen voor dynamische keten van berichttoewijzingen:

  • Leid uw klasse af van CDynamicChain. Geef in de berichttoewijzing de CHAIN_MSG_MAP_DYNAMIC macro op die moet worden gekoppeld aan de standaardberichttoewijzing van een ander object.

  • Leid elke klasse af waarnaar u een keten wilt maken van CMessageMap. CMessageMap staat toe dat een object de berichttoewijzingen weergeeft aan andere objecten.

  • Roep CDynamicChain::SetChainEntry aan om te bepalen welk object en welke berichttoewijzing u wilt koppelen.

Stel dat uw klasse als volgt is gedefinieerd:

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

De client roept vervolgens het volgende aan CMyWindow::SetChainEntry:

myCtl.SetChainEntry(1313, &chainedObj);

waarbij chainedObj het gekoppelde object is en een exemplaar is van een klasse die is afgeleid van CMessageMap. Als myCtl er nu een bericht wordt ontvangen dat niet wordt verwerkt door OnPaint of OnSetFocus, stuurt de vensterprocedure het bericht naar chainedObjde standaardberichttoewijzing.

Zie Message Maps in het artikel 'ATL Window Classes' (ATL-vensterklassen) voor meer informatie over het koppelen van berichtenoverzichten.

Requirements

Koptekst: atlwin.h

CDynamicChain::CallChain

Hiermee wordt het Windows-bericht doorverdeeld naar de berichttoewijzing van een ander object.

BOOL CallChain(
    DWORD dwChainID,
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT& lResult);

Parameterwaarden

dwChainID
[in] De unieke id die is gekoppeld aan het gekoppelde object en de bijbehorende berichttoewijzing.

hWnd
[in] De greep naar het venster dat het bericht ontvangt.

uMsg
[in] Het bericht dat naar het venster is verzonden.

wParam
[in] Aanvullende berichtspecifieke informatie.

lParam
[in] Aanvullende berichtspecifieke informatie.

lResult
[uit] Het resultaat van de berichtverwerking.

Retourwaarde

WAAR als het bericht volledig is verwerkt; anders, ONWAAR.

Opmerkingen

Als u wilt dat de vensterprocedure wordt aangeroepen CallChain, moet u de macro CHAIN_MSG_MAP_DYNAMIC opgeven in uw berichtoverzicht. Zie het overzicht van CDynamicChain voor een voorbeeld.

CallChain vereist een eerdere aanroep van SetChainEntry om de dwChainID-waarde te koppelen aan een object en de bijbehorende berichttoewijzing.

CDynamicChain::CDynamicChain

De constructor.

CDynamicChain();

CDynamicChain::~CDynamicChain

De destructor.

~CDynamicChain();

Opmerkingen

Alle toegewezen resources worden vrijgemaakt.

CDynamicChain::RemoveChainEntry

Hiermee verwijdert u de opgegeven berichttoewijzing uit de verzameling.

BOOL RemoveChainEntry(DWORD dwChainID);

Parameterwaarden

dwChainID
[in] De unieke id die is gekoppeld aan het gekoppelde object en de bijbehorende berichttoewijzing. U definieert deze waarde oorspronkelijk via een aanroep naar SetChainEntry.

Retourwaarde

WAAR als de berichttoewijzing is verwijderd uit de verzameling. Anders, ONWAAR.

CDynamicChain::SetChainEntry

Hiermee voegt u de opgegeven berichttoewijzing toe aan de verzameling.

BOOL SetChainEntry(
    DWORD dwChainID,
    CMessageMap* pObject,
    DWORD dwMsgMapID = 0);

Parameterwaarden

dwChainID
[in] De unieke id die is gekoppeld aan het gekoppelde object en de bijbehorende berichttoewijzing.

pObject-
[in] Een aanwijzer naar het gekoppelde object dat de berichttoewijzing declareerde. Dit object moet zijn afgeleid van CMessageMap.

dwMsgMapID
[in] De id van de berichttoewijzing in het gekoppelde object. De standaardwaarde is 0, waarmee de standaardberichttoewijzing wordt geïdentificeerd die is gedeclareerd met BEGIN_MSG_MAP. Als u een alternatieve berichttoewijzing wilt opgeven die is gedeclareerd met ALT_MSG_MAP(msgMapID), geeft u door msgMapID.

Retourwaarde

WAAR als de berichttoewijzing is toegevoegd aan de verzameling. Anders, ONWAAR.

Opmerkingen

Als de dwChainID-waarde al bestaat in de verzameling, worden het bijbehorende object en de berichttoewijzing vervangen door respectievelijk pObject en dwMsgMapID. Anders wordt er een nieuwe vermelding toegevoegd.

Zie ook

Klasse CWindowImpl
Overzicht van klassen