Condividi tramite


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::SetChainEntryquindi :

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 chainedObjmappa 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 CallChainla 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.

Vedi anche

Classe CWindowImpl
Cenni preliminari sulla classe