CDynamicChain – třída
Tato třída poskytuje metody podporující dynamické řetězení map zpráv.
Důležité
Tuto třídu a její členy nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.
Syntaxe
class CDynamicChain
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CDynamicChain::CDynamicChain | Konstruktor |
CDynamicChain::~CDynamicChain | Destruktor. |
Veřejné metody
Název | Popis |
---|---|
CDynamicChain::CallChain | Nasměruje zprávu systému Windows na mapu zpráv jiného objektu. |
CDynamicChain::RemoveChainEntry | Odebere položku mapy zpráv z kolekce. |
CDynamicChain::SetChainEntry | Přidá položku mapy zpráv do kolekce nebo upraví existující položku. |
Poznámky
CDynamicChain
spravuje kolekci map zpráv, což umožňuje směrovat zprávu systému Windows v době běhu na mapu zpráv jiného objektu.
Pokud chcete přidat podporu dynamického řetězení map zpráv, postupujte takto:
Odvodit třídu z
CDynamicChain
. V mapě zpráv zadejte CHAIN_MSG_MAP_DYNAMIC makro, které se má zřetězí s výchozí mapou zpráv jiného objektu.Odvozte všechny třídy, ke které chcete zřetězovat z CMessageMap.
CMessageMap
umožňuje objektu zpřístupnit mapy zpráv jiným objektům.Volání
CDynamicChain::SetChainEntry
k určení objektu a mapy zpráv, ke kterému chcete zřetězit.
Předpokládejme například, že vaše třída je definována takto:
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;
}
};
Klient pak zavolá CMyWindow::SetChainEntry
:
myCtl.SetChainEntry(1313, &chainedObj);
kde chainedObj
je zřetězený objekt a je instancí třídy odvozené z CMessageMap
. Pokud nyní obdrží zprávu, myCtl
která není zpracována OnPaint
nebo OnSetFocus
, procedura okna směruje zprávu na chainedObj
výchozí mapu zpráv.
Další informace o řetězení mapy zpráv naleznete v tématu Mapy zpráv v článku "ATL Window Classes" (Třídy oken ATL).
Požadavky
Hlavička: atlwin.h
CDynamicChain::CallChain
Nasměruje zprávu systému Windows na mapu zpráv jiného objektu.
BOOL CallChain(
DWORD dwChainID,
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
LRESULT& lResult);
Parametry
dwChainID
[v] Jedinečný identifikátor přidružený ke zřetězenýmu objektu a jeho mapě zpráv.
hWnd
[v] Popisovač okna, ve které se zpráva zobrazuje.
uMsg
[v] Zpráva byla odeslána do okna.
wParam
[v] Další informace specifické pro zprávu
lParam
[v] Další informace specifické pro zprávu
LResult
[ven] Výsledek zpracování zprávy.
Návratová hodnota
TRUE, pokud je zpráva plně zpracována; jinak NEPRAVDA.
Poznámky
Chcete-li CallChain
vyvolat proceduru okna , je nutné zadat CHAIN_MSG_MAP_DYNAMIC makro v mapě zpráv. Příklad najdete v přehledu CDynamicChain .
CallChain
vyžaduje předchozí volání SetChainEntry k přidružení hodnoty dwChainID k objektu a jeho mapě zprávy.
CDynamicChain::CDynamicChain
Konstruktor
CDynamicChain();
CDynamicChain::~CDynamicChain
Destruktor.
~CDynamicChain();
Poznámky
Uvolní všechny přidělené prostředky.
CDynamicChain::RemoveChainEntry
Odebere zadanou mapu zpráv z kolekce.
BOOL RemoveChainEntry(DWORD dwChainID);
Parametry
dwChainID
[v] Jedinečný identifikátor přidružený ke zřetězenýmu objektu a jeho mapě zpráv. Tuto hodnotu jste původně definovali voláním SetChainEntry.
Návratová hodnota
TRUE, pokud je mapa zpráv úspěšně odebrána z kolekce. V opačném případě FALSE.
CDynamicChain::SetChainEntry
Přidá do kolekce zadanou mapu zpráv.
BOOL SetChainEntry(
DWORD dwChainID,
CMessageMap* pObject,
DWORD dwMsgMapID = 0);
Parametry
dwChainID
[v] Jedinečný identifikátor přidružený ke zřetězenýmu objektu a jeho mapě zpráv.
objekt pObject
[v] Ukazatel na zřetězený objekt deklarující mapu zprávy. Tento objekt musí být odvozen z CMessageMap.
dwMsgMapID
[v] Identifikátor mapy zpráv v zřetězený objekt. Výchozí hodnota je 0, která identifikuje výchozí mapu zpráv deklarovanou pomocí BEGIN_MSG_MAP. Chcete-li zadat alternativní mapu zpráv deklarovanou pomocí ALT_MSG_MAP(msgMapID), předejte msgMapID
.
Návratová hodnota
TRUE, pokud je mapa zpráv úspěšně přidána do kolekce. V opačném případě FALSE.
Poznámky
Pokud hodnota dwChainID již v kolekci existuje, její přidružený objekt a mapa zpráv jsou nahrazeny pObject a dwMsgMapID v uvedeném pořadí. V opačném případě se přidá nová položka.