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 COleControl
classe 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 di .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 (.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 parametro |
---|---|
VTS_I2 | short |
VTS_I4 | long |
VTS_R4 | float |
VTS_R8 | double |
VTS_COLOR | OLE_COLOR |
VTS_CY | CURRENCY |
VTS_DATE | DATE |
VTS_BSTR | const Char* |
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