Classe CDynamicChain
Questa classe fornisce metodi che supportano il concatenamento dinamico delle mappe messaggi.
Importante
Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.
Sintassi
class CDynamicChain
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CDynamicChain::CDynamicChain | Costruttore. |
CDynamicChain::~CDynamicChain | Distruttore. |
Metodi pubblici
Nome | Descrizione |
---|---|
CDynamicChain::CallChain | Indirizza un messaggio di Windows alla mappa messaggi di un altro oggetto. |
CDynamicChain::RemoveChainEntry | Rimuove una voce della mappa messaggi dalla raccolta. |
CDynamicChain::SetChainEntry | Aggiunge una voce della mappa messaggi alla raccolta o modifica una voce esistente. |
Osservazioni:
CDynamicChain
gestisce una raccolta di mappe messaggi, consentendo di indirizzare un messaggio di Windows, in fase di esecuzione, alla mappa messaggi di un altro oggetto.
Per aggiungere il supporto per il concatenamento dinamico delle mappe messaggi, eseguire le operazioni seguenti:
Derivare la classe da
CDynamicChain
. Nella mappa dei messaggi specificare la macro CHAIN_MSG_MAP_DYNAMIC da concatenare alla mappa messaggi predefinita di un altro oggetto.Derivare ogni classe a cui si vuole concatenare da CMessageMap.
CMessageMap
consente a un oggetto di esporre il relativo mapping dei messaggi ad altri oggetti.Chiamare
CDynamicChain::SetChainEntry
per identificare l'oggetto e il mapping dei messaggi a cui si vuole concatenare.
Si supponga, ad esempio, che la classe sia definita come segue:
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;
}
};
Il client chiama CMyWindow::SetChainEntry
quindi :
myCtl.SetChainEntry(1313, &chainedObj);
dove chainedObj
è l'oggetto concatenato e è un'istanza di una classe derivata da CMessageMap
. A questo punto, se myCtl
riceve un messaggio non gestito da OnPaint
o OnSetFocus
, la routine della finestra indirizza il messaggio alla chainedObj
mappa dei messaggi predefinita.
Per altre informazioni sul concatenamento delle mappe dei messaggi, vedere Mappe messaggi nell'articolo "Classi finestra ATL".
Requisiti
Intestazione: atlwin.h
CDynamicChain::CallChain
Indirizza il messaggio di Windows alla mappa messaggi di un altro oggetto.
BOOL CallChain(
DWORD dwChainID,
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
LRESULT& lResult);
Parametri
dwChainID
[in] Identificatore univoco associato all'oggetto concatenato e alla relativa mappa messaggi.
hWnd
[in] Handle della finestra che riceve il messaggio.
uMsg
[in] Messaggio inviato alla finestra.
wParam
[in] Informazioni aggiuntive specifiche del messaggio.
lParam
[in] Informazioni aggiuntive specifiche del messaggio.
lResult
[out] Risultato dell'elaborazione del messaggio.
Valore restituito
TRUE se il messaggio è completamente elaborato; in caso contrario, FALSE.
Osservazioni:
Per richiamare CallChain
la routine della finestra, è necessario specificare la macro CHAIN_MSG_MAP_DYNAMIC nella mappa dei messaggi. Per un esempio, vedere la panoramica di CDynamicChain .
CallChain
richiede una chiamata precedente a SetChainEntry per associare il valore dwChainID a un oggetto e alla relativa mappa messaggi.
CDynamicChain::CDynamicChain
Costruttore.
CDynamicChain();
CDynamicChain::~CDynamicChain
Distruttore.
~CDynamicChain();
Osservazioni:
Libera tutte le risorse allocate.
CDynamicChain::RemoveChainEntry
Rimuove la mappa dei messaggi specificata dalla raccolta.
BOOL RemoveChainEntry(DWORD dwChainID);
Parametri
dwChainID
[in] Identificatore univoco associato all'oggetto concatenato e alla relativa mappa messaggi. Questo valore viene originariamente definito tramite una chiamata a SetChainEntry.
Valore restituito
TRUE se la mappa dei messaggi viene rimossa correttamente dalla raccolta. In caso contrario, FALSE.
CDynamicChain::SetChainEntry
Aggiunge la mappa dei messaggi specificata alla raccolta.
BOOL SetChainEntry(
DWORD dwChainID,
CMessageMap* pObject,
DWORD dwMsgMapID = 0);
Parametri
dwChainID
[in] Identificatore univoco associato all'oggetto concatenato e alla relativa mappa messaggi.
pObject
[in] Puntatore all'oggetto concatenato che dichiara la mappa dei messaggi. Questo oggetto deve derivare da CMessageMap.
dwMsgMapID
[in] Identificatore della mappa messaggi nell'oggetto concatenato. Il valore predefinito è 0, che identifica la mappa dei messaggi predefinita dichiarata con BEGIN_MSG_MAP. Per specificare una mappa messaggi alternativa dichiarata con ALT_MSG_MAP(msgMapID), passare msgMapID
.
Valore restituito
TRUE se la mappa dei messaggi viene aggiunta correttamente alla raccolta. In caso contrario, FALSE.
Osservazioni:
Se il valore dwChainID esiste già nell'insieme, l'oggetto e la mappa messaggi associati vengono sostituiti rispettivamente da pObject e dwMsgMapID. In caso contrario, viene aggiunta una nuova voce.