Condividi tramite


Mappe eventi

Ogni volta che un controllo deve notificare al relativo contenitore che si è verificata un'azione (determinata dallo sviluppatore del controllo), quale ad esempio la pressione di un tasto, il clic del mouse o una modifica allo stato del controllo, il controllo chiama una funzione che genera eventi. Questa funzione notifica al contenitore del controllo che si è verificata un'azione importante tramite la generazione dell'evento correlato.

La libreria Microsoft Foundation Class offre un modello ottimizzato di programmazione per generare gli eventi. In questo modello, le "mappe eventi" vengono utilizzate per designare per un determinato controllo quali funzioni generano quali eventi. Le mappe eventi contengono una macro per ogni evento. Ad esempio, una mappa evento che genera un evento Click predefinito potrebbe presentarsi nel seguente modo:

BEGIN_EVENT_MAP(CMyAxCtrl, COleControl)
EVENT_STOCK_CLICK()
END_EVENT_MAP()

La EVENT_STOCK_CLICK macro indica che il controllo attiverà un evento Click azionario ogni volta che rileva un clic del mouse. Per un elenco più dettagliato di altri eventi azionari, vedere l'articolo Controlli ActiveX: Eventi. Le macro sono inoltre disponibili per indicare eventi personalizzati.

Sebbene le macro di mapping degli eventi siano importanti, in genere non vengono inserite direttamente. Ciò è dovuto al fatto che la finestra Proprietà (in Visualizzazione classi) crea automaticamente voci della mappa eventi nei file di origine quando viene usata per associare funzioni di generazione di eventi agli eventi. Ogni volta che vuoi modificare o aggiungere una voce della mappa eventi, puoi usare la finestra Proprietà .

Per supportare le mappe eventi, MFC fornisce le seguenti macro:

Macro mappa eventi

Dichiarazione e delimitazione della mappa eventi

Nome Descrizione
DECLARE_EVENT_MAP Consente di dichiarare che una mappa eventi verrà utilizzata in una classe per eseguire il mapping degli eventi alle funzioni che generano eventi (deve essere utilizzata nella dichiarazione di classe).
BEGIN_EVENT_MAP Consente di iniziare la definizione di una mappa eventi (che sarà utilizzata nell'implementazione della classe).
END_EVENT_MAP Consente di finire la definizione di una mappa eventi (che sarà utilizzata nell'implementazione della classe).

Macro per il mapping degli eventi

Nome Descrizione
EVENT_CUSTOM Indica quale funzione che genera eventi genererà l'evento specificato.
EVENT_CUSTOM_ID Indica quale funzione che genera eventi genererà l'evento specificato, con un ID invio designato.

Macro per il mapping di messaggi

Nome Descrizione
ON_OLEVERB Indica un verbo personalizzato gestito dal controllo OLE.
ON_STDOLEVERB Consente di eseguire l'override di un mapping dei verbi standard del controllo OLE.

DECLARE_EVENT_MAP

Ogni COleControlclasse derivata dal programma può fornire una mappa eventi per specificare gli eventi che verranno generati dal controllo.

DECLARE_EVENT_MAP()

Osservazioni:

Usare la macro DECLARE_EVENT_MAP alla fine della dichiarazione di classe. Quindi, nel file con estensione cpp che definisce le funzioni membro per la classe utilizzare la macro BEGIN_EVENT_MAP, le voci di macro per ogni evento del controllo e la macro END_EVENT_MAP per dichiarare la fine dell'elenco di eventi.

Per altre informazioni sulle mappe eventi, vedere l'articolo Controlli ActiveX: Eventi.

Requisiti

Intestazione afxctl.h

BEGIN_EVENT_MAP

Inizia la definizione della mappa eventi.

BEGIN_EVENT_MAP(theClass,  baseClass)

Parametri

theClass
Specifica il nome della classe del controllo la cui mappa eventi è.

Baseclass
Specifica il nome della classe base di theClass.

Osservazioni:

Nel file di implementazione (con estensione cpp) che definisce le funzioni membro per la classe, avviare la mappa eventi con la macro BEGIN_EVENT_MAP, quindi aggiungere voci di macro per ogni evento e completare la mappa eventi con la macro END_EVENT_MAP.

Per altre informazioni sulle mappe eventi e sulla macro BEGIN_EVENT_MAP, vedere l'articolo Controlli ActiveX: Eventi.

Requisiti

Intestazione afxctl.h

END_EVENT_MAP

Utilizzare la macro END_EVENT_MAP per terminare la definizione della mappa eventi.

END_EVENT_MAP()

Requisiti

Intestazione afxctl.h

EVENT_CUSTOM

Definisce una voce della mappa eventi per un evento personalizzato.

EVENT_CUSTOM(pszName, pfnFire,  vtsParams)

Parametri

pszName
Nome dell'evento.

pfnFire
Nome della funzione di generazione dell'evento.

vtsParams
Elenco delimitato da spazi di una o più costanti che specificano l'elenco di parametri della funzione.

Osservazioni:

Il parametro vtsParams è un elenco di valori separati da spazi dalle VTS_ costanti. Uno o più di questi valori separati da spazi (non da virgole) specifica l'elenco di parametri della funzione. Ad esempio:

VTS_COLOR VTS_FONT

specifica un elenco contenente un intero a 32 bit che rappresenta un valore di colore RGB, seguito da un puntatore all'interfaccia IFontDisp di un oggetto carattere OLE.

Le VTS_ costanti e i relativi significati sono le seguenti:

Simbolo Tipo di parametro
VTS_I2 short
VTS_I4 long
VTS_R4 float
VTS_R8 double
VTS_COLOR OLE_COLOR
VTS_CY VALUTA
VTS_DATE DATE
VTS_BSTR constChar*
VTS_DISPATCH LPDISPATCH
VTS_FONT IFontDispatch*
VTS_HANDLE HANDLE
VTS_SCODE SCODE
VTS_BOOL BOOL
VTS_VARIANT const VARIANT*
VTS_PVARIANT VARIANT*
VTS_UNKNOWN LPUNKNOWN
VTS_OPTEXCLUSIVE OLE_OPTEXCLUSIVE
VTS_PICTURE IPictureDisp*
VTS_TRISTATE OLE_TRISTATE
VTS_XPOS_PIXELS OLE_XPOS_PIXELS
VTS_YPOS_PIXELS OLE_YPOS_PIXELS
VTS_XSIZE_PIXELS OLE_XSIZE_PIXELS
VTS_YSIZE_PIXELS OLE_YSIZE_PIXELS
TS_XPOS_HIMETRIC OLE_XPOS_HIMETRIC
VTS_YPOS_HIMETRIC OLE_YPOS_HIMETRIC
VTS_XSIZE_HIMETRIC OLE_XSIZE_HIMETRIC
VTS_YSIZE_HIMETRIC OLE_YSIZE_HIMETRIC

Nota

Sono state definite costanti varianti aggiuntive per tutti i tipi varianti, ad eccezione di VTS_FONT e VTS_PICTURE, che forniscono un puntatore alla costante dati variant. Queste costanti vengono denominate usando la VTS_Pconstantname convenzione . Ad esempio, VTS_PCOLOR è un puntatore a una costante VTS_COLOR.

Requisiti

Intestazione afxctl.h

EVENT_CUSTOM_ID

Definisce una funzione di generazione di eventi per un evento personalizzato appartenente all'ID dispatch specificato da dispid.

EVENT_CUSTOM_ID(
    pszName,
    dispid,
    pfnFire,
    vtsParams)

Parametri

pszName
Nome dell'evento.

Dispid
ID dispatch utilizzato dal controllo durante la generazione dell'evento.

pfnFire
Nome della funzione di generazione dell'evento.

vtsParams
Elenco di variabili di parametri passati al contenitore di controlli quando viene generato l'evento.

Osservazioni:

L'argomento vtsParams è un elenco di valori separati da spazi dalle VTS_ costanti. Uno o più di questi valori separati da spazi, non da virgole, specifica l'elenco di parametri della funzione. Ad esempio:

VTS_COLOR VTS_FONT

specifica un elenco contenente un intero a 32 bit che rappresenta un valore di colore RGB, seguito da un puntatore all'interfaccia IFontDisp di un oggetto carattere OLE.

Per un elenco delle VTS_ costanti, vedere EVENT_CUSTOM.

Requisiti

Intestazione afxctl.h

ON_OLEVERB

Questa macro definisce una voce della mappa messaggi che esegue il mapping di un verbo personalizzato a una funzione membro specifica del controllo.

ON_OLEVERB(idsVerbName,  memberFxn)

Parametri

idsVerbName
ID risorsa stringa del nome del verbo.

memberFxn
Funzione chiamata dal framework quando viene richiamato il verbo.

Osservazioni:

L'editor di risorse può essere usato per creare nomi verbi personalizzati aggiunti alla tabella di stringhe.

Il prototipo di funzione per memberFxn è:

BOOL memberFxn(
   LPMSG    lpMsg,
   HWND     hWndParent,
   LPCRECT  lpRect);

I valori dei parametri lpMsg, hWndParent e lpRect vengono acquisiti dai parametri corrispondenti della IOleObject::DoVerb funzione membro.

Requisiti

Intestazione afxole.h

ON_STDOLEVERB

Utilizzare questa macro per eseguire l'override del comportamento predefinito di un verbo standard.

ON_STDOLEVERB(iVerb, memberFxn)

Parametri

iVerb
Indice verbo standard per il verbo sottoposto a override.

memberFxn
Funzione chiamata dal framework quando viene richiamato il verbo.

Osservazioni:

L'indice del verbo standard è nel formato OLEIVERB_, seguito da un'azione. OLEIVERB_SHOW, OLEIVERB_HIDE e OLEIVERB_UIACTIVATE sono alcuni esempi di verbi standard.

Vedere ON_OLEVERB per una descrizione del prototipo di funzione da usare come parametro memberFxn .

Requisiti

Intestazione afxole.h

Vedi anche

Macro e globali