Classe CMessageMap
Questa classe consente di accedere alle mappe messaggi di un oggetto da un altro oggetto.
Importante
Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.
Sintassi
class ATL_NO_VTABLE CMessageMap
Membri
Metodi pubblici
Nome | Descrizione |
---|---|
CMessageMap::P rocessWindowMessage | Accede a una mappa messaggi nella CMessageMap classe derivata da . |
Osservazioni:
CMessageMap
è una classe di base astratta che consente l'accesso alle mappe messaggi di un oggetto da un altro oggetto. Affinché un oggetto esponga le mappe messaggi, la relativa classe deve derivare da CMessageMap
.
ATL usa CMessageMap
per supportare le finestre contenute e il concatenamento di mappe messaggi dinamiche. Ad esempio, qualsiasi classe contenente un oggetto CContainedWindow deve derivare da CMessageMap
. Il codice seguente è tratto dall'esempio SUBEDIT . Tramite CComControl, la CAtlEdit
classe deriva automaticamente da CMessageMap
.
class ATL_NO_VTABLE CAtlEdit :
OtherInheritedClasses
public CComControl<CAtlEdit>
// CComControl derives from CWindowImpl, which derives from CMessageMap
{
public:
// Declare a contained window data member
CContainedWindow m_ctlEdit;
// Initialize the contained window:
// 1. Pass "Edit" to specify that the contained
// window should be based on the standard
// Windows Edit box
// 2. Pass 'this' pointer to specify that CAtlEdit
// contains the message map to be used for the
// contained window's message processing
// 3. Pass the identifier of the message map. '1'
// identifies the alternate message map declared
// with ALT_MSG_MAP(1)
CAtlEdit()
: m_ctlEdit(_T("Edit"), this, 1)
{
m_bWindowOnly = TRUE;
}
// Declare the default message map, identified by '0'
BEGIN_MSG_MAP(CAtlEdit)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
CHAIN_MSG_MAP(CComControl<CAtlEdit>)
// Declare an alternate message map, identified by '1'
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_CHAR, OnChar)
END_MSG_MAP()
Poiché la finestra contenuta, m_EditCtrl
, userà una mappa messaggi nella classe contenitore, CAtlEdit
deriva da CMessageMap
.
Per altre informazioni sulle mappe messaggi, vedere Mappe messaggi nell'articolo "Classi finestra ATL".
Requisiti
Intestazione: atlwin.h
CMessageMap::P rocessWindowMessage
Accede alla mappa messaggi identificata da dwMsgMapID in una CMessageMap
classe derivata da .
virtual BOOL ProcessWindowMessage(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
LRESULT& lResult,
DWORD dwMsgMapID) = 0;
Parametri
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.
dwMsgMapID
[in] Identificatore della mappa messaggi che elabora il messaggio. La mappa dei messaggi predefinita, dichiarata con BEGIN_MSG_MAP, è identificata da 0. Una mappa dei messaggi alternativa, dichiarata con ALT_MSG_MAP(msgMapID), viene identificata da msgMapID
.
Valore restituito
TRUE se il messaggio è completamente gestito; in caso contrario, FALSE.
Osservazioni:
Chiamato dalla routine della finestra di un oggetto CContainedWindow o di un oggetto che esegue il concatenamento dinamico alla mappa dei messaggi.
Vedi anche
Classe CDynamicChain
BEGIN_MSG_MAP
ALT_MSG_MAP(msgMapID)
Cenni preliminari sulla classe