BEGIN_MSG_MAP

BEGIN_MSG_MAP ( theClass )

Parametri

theClass

[in] Il nome della classe che contiene la mappa dei messaggi.

Osservazioni

Segna l'inizio della mappa messaggio predefinito. CWindowImpl::WindowProc utilizza la mappa messaggi predefinita per elaborare i messaggi inviati alla finestra. La mappa messaggi indirizza i messaggi per la funzione di gestore appropriato o per un'altra mappa messaggi.

Le seguenti macro mappare un messaggio a una funzione del gestore. Questa funzione deve essere definita in theClass.

Macro Descrizione
MESSAGE_HANDLER Esegue il mapping di un messaggio di Windows a una funzione del gestore.
MESSAGE_RANGE_HANDLER Mappe messaggi un intervallo contiguo di Windows a una funzione del gestore.
COMMAND_HANDLER Esegue il mapping di un messaggio WM_COMMAND a una funzione del gestore, basata sul codice di notifica e l'identificatore dell'acceleratore, il controllo o voce di menu.
COMMAND_ID_HANDLER Esegue il mapping di un messaggio WM_COMMAND a una funzione del gestore, basata sull'identificatore dell'acceleratore, il controllo o voce di menu.
COMMAND_CODE_HANDLER Esegue il mapping di un messaggio WM_COMMAND a una funzione del gestore, basata sul codice di notifica.
COMMAND_RANGE_HANDLER Esegue il mapping di un intervallo contiguo di messaggi WM_COMMAND a una funzione del gestore, basata sull'identificatore dell'acceleratore, il controllo o voce di menu.
NOTIFY_HANDLER Esegue il mapping di un messaggio WM_NOTIFY a una funzione del gestore, basata sul codice di notifica e l'identificatore del controllo.
NOTIFY_ID_HANDLER Esegue il mapping di un messaggio WM_NOTIFY a una funzione del gestore, basata su un identificatore di controllo.
NOTIFY_CODE_HANDLER Esegue il mapping di un messaggio WM_NOTIFY a una funzione del gestore, basata sul codice di notifica.
NOTIFY_RANGE_HANDLER Esegue il mapping di un intervallo contiguo di messaggi WM_NOTIFY a una funzione del gestore, basata su un identificatore di controllo.

Le seguenti macro direttamente un messaggio a un'altra mappa messaggi. Questo processo è chiamato "a catena".

Macro Descrizione
CHAIN_MSG_MAP Catene per la mappa messaggi predefinita nella classe base.
CHAIN_MSG_MAP_MEMBER Catene per la mappa messaggi predefinita in un membro dati della classe.
CHAIN_MSG_MAP_ALT Mappa di catene a un messaggio alternativo nella classe base.
CHAIN_MSG_MAP_ALT_MEMBER Catene a un messaggio alternativo mappa in un membro dati della classe.
CHAIN_MSG_MAP_DYNAMIC Catene per la mappa messaggi predefinita in un'altra classe in fase di esecuzione.

Esempio

classe CMyWindow:...
{
pubblica:
 nbsp; ...

BEGIN_MSG_MAP(CMyWindow)
      MESSAGE_HANDLER (WM_PAINT, OnPaint)
      MESSAGE_HANDLER (WM_SETFOCUS, OnSetFocus)
      CHAIN_MSG_MAP(CMyBaseWindow)
   END_MSG_MAP()

LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
   { ... }

LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
   { ... }
}

Quando un CMyWindow oggetto riceve un WM_PAINT messaggio, il messaggio è indirizzato ad CMyWindow::OnPaint per l'elaborazione effettiva. Se OnPaint indica il messaggio richiede ulteriore elaborazione, la volontà di messaggio poi essere diretto alla mappa messaggi predefinita inCMyBaseWindow.

Oltre alla mappa messaggi predefiniti, è possibile definire una mappa di messaggio alternativo con ALT_MSG_MAP. Iniziare sempre una mappa messaggi con BEGIN_MSG_MAP. È possibile dichiarare mappe successivi messaggi alternativo. L'esempio seguente mostra la mappa messaggi predefinita e la mappa di un messaggio alternativo, ognuno contenente una funzione del gestore:

BEGI&N_MSG_MAP(CMyClass)
 nbsp; MESSAGE_HANDLER (WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER (WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()

L'esempio seguente illustra due mappe messaggio alternativo. La mappa messaggi predefinita è vuota.

BEGI&N_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
 nbsp; MESSAGE_HANDLER (WM_PAINT, OnPaint)
   MESSAGE_HANDLER (WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
   MESSAGE_HANDLER (WM_CREATE, OnCreate)
END_MSG_MAP()

La macro END_MSG_MAP segna la fine della mappa messaggi. Nota che c'è sempre esattamente un'istanza di BEGIN_MSG_MAP ed END_MSG_MAP.

Per ulteriori informazioni sull'utilizzo di mappe messaggi in ATL, vedere Mappe messaggio nell'articolo "Classi finestra ATL."

Macro ATL e funzioni globali

Vedi anche

CMessageMap, CDynamicChain

Index