Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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.
CMessageMapstaat toe dat een object de berichttoewijzingen weergeeft aan andere objecten.Roep
CDynamicChain::SetChainEntryaan 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.