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."
Vedi anche