Mappe sink di evento
Quando un controllo OLE incorporato genera un evento, il contenitore del controllo riceve l'evento usando un meccanismo, denominato "mappa sink eventi", fornito da MFC. Questa mappa sink di eventi designa le funzioni del gestore per ogni evento specifico, nonché i parametri di tali eventi. Per altre informazioni sulle mappe sink di eventi, vedere l'articolo Contenitori di controlli ActiveX.
Mappe sink di evento
Nome | Descrizione |
---|---|
BEGIN_EVENTSINK_MAP | Avvia la definizione di una mappa sink di eventi. |
DECLARE_EVENTSINK_MAP | Dichiara una mappa del sink di eventi. |
END_EVENTSINK_MAP | Termina la definizione di una mappa sink di eventi. |
ON_EVENT | Definisce un gestore eventi per un evento specifico. |
ON_EVENT_RANGE | Definisce un gestore eventi per un evento specifico generato da un set di controlli OLE. |
ON_EVENT_REFLECT | Riceve gli eventi generati dal controllo prima che vengano gestiti dal contenitore del controllo. |
ON_PROPNOTIFY | Definisce un gestore per la gestione delle notifiche delle proprietà da un controllo OLE. |
ON_PROPNOTIFY_RANGE | Definisce un gestore per la gestione delle notifiche delle proprietà da un set di controlli OLE. |
ON_PROPNOTIFY_REFLECT | Riceve le notifiche delle proprietà inviate dal controllo prima che vengano gestite dal contenitore del controllo. |
BEGIN_EVENTSINK_MAP
Inizia la definizione della mappa del sink di eventi.
BEGIN_EVENTSINK_MAP(theClass, baseClass)
Parametri
theClass
Specifica il nome della classe del controllo il cui mapping del sink di 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 sink eventi con la macro BEGIN_EVENTSINK_MAP, quindi aggiungere voci di macro per ogni evento di cui ricevere notifica e completare la mappa sink eventi con la macro END_EVENTSINK_MAP.
Per altre informazioni sulle mappe del sink di eventi e sui contenitori di controlli OLE, vedere l'articolo Contenitori di controlli ActiveX.
Requisiti
Intestazione afxdisp.h
DECLARE_EVENTSINK_MAP
Un contenitore OLE può fornire una mappa del sink di eventi per specificare gli eventi a cui il contenitore riceverà una notifica.
DECLARE_EVENTSINK_MAP()
Osservazioni:
Usare la macro DECLARE_EVENTSINK_MAP alla fine della dichiarazione di classe. Quindi, in . File CPP che definisce le funzioni membro per la classe , utilizzare la macro BEGIN_EVENTSINK_MAP, le voci di macro per ogni evento di cui ricevere notifica e la macro END_EVENTSINK_MAP per dichiarare la fine dell'elenco di sink eventi.
Per altre informazioni sulle mappe sink di eventi, vedere l'articolo Contenitori di controlli ActiveX.
Requisiti
Intestazione afxwin.h
END_EVENTSINK_MAP
Termina la definizione della mappa sink di eventi.
END_EVENTSINK_MAP()
Requisiti
Intestazione afxdisp.h
ON_EVENT
Utilizzare la macro ON_EVENT per definire una funzione del gestore eventi per un evento generato da un controllo OLE.
ON_EVENT(theClass, id, dispid, pfnHandler, vtsParams)
Parametri
theClass
Classe a cui appartiene la mappa sink di eventi.
id
ID del controllo OLE.
dispid
ID dispatch dell'evento generato dal controllo .
pfnHandler
Puntatore a una funzione membro che gestisce l'evento. Questa funzione deve avere un tipo restituito BOOL e i tipi di parametro che corrispondono ai parametri dell'evento (vedere vtsParams). La funzione deve restituire TRUE per indicare che l'evento è stato gestito; in caso contrario FALSE.
vtsParams
Sequenza di costanti VTS_ che specifica i tipi dei parametri per l'evento. Si tratta delle stesse costanti utilizzate nelle voci della mappa dispatch, ad esempio DISP_FUNCTION.
Osservazioni:
L'argomento vtsParams è un elenco di valori separati da spazi dalle costanti VTS_ . Uno o più di questi valori separati da spazi (non da virgole) specifica l'elenco di parametri della funzione. Ad esempio:
VTS_I2 VTS_BOOL
specifica un elenco contenente un numero intero breve seguito da un valore BOOL.
Per un elenco delle costanti VTS_ , vedere EVENT_CUSTOM.
Requisiti
Intestazione afxdisp.h
ON_EVENT_RANGE
Utilizzare la macro ON_EVENT_RANGE per definire una funzione del gestore eventi per un evento generato da un controllo OLE con UN ID di controllo all'interno di un intervallo contiguo di ID.
ON_EVENT_RANGE(theClass, idFirst, idLast, dispid, pfnHandler, vtsParams)
Parametri
theClass
Classe a cui appartiene la mappa sink di eventi.
idFirst
ID del controllo del primo controllo OLE nell'intervallo.
idLast
ID del controllo dell'ultimo controllo OLE nell'intervallo.
dispid
ID dispatch dell'evento generato dal controllo .
pfnHandler
Puntatore a una funzione membro che gestisce l'evento. Questa funzione deve avere un tipo restituito BOOL, un primo parametro di tipo UINT (per l'ID controllo) e tipi di parametro aggiuntivi che corrispondono ai parametri dell'evento (vedere vtsParams). La funzione deve restituire TRUE per indicare che l'evento è stato gestito; in caso contrario FALSE.
vtsParams
Sequenza di costanti VTS_ che specifica i tipi dei parametri per l'evento. La prima costante deve essere di tipo VTS_I4, per l'ID del controllo. Si tratta delle stesse costanti utilizzate nelle voci della mappa dispatch, ad esempio DISP_FUNCTION.
Osservazioni:
L'argomento vtsParams è un elenco di valori separati da spazi dalle costanti VTS_ . Uno o più di questi valori separati da spazi (non da virgole) specifica l'elenco di parametri della funzione. Ad esempio:
VTS_I2 VTS_BOOL
specifica un elenco contenente un numero intero breve seguito da un valore BOOL.
Per un elenco delle costanti VTS_ , vedere EVENT_CUSTOM.
Esempio
Nell'esempio seguente viene illustrato un gestore eventi, per l'evento MouseDown, implementato per tre controlli ( IDC_MYCTRL1 tramite IDC_MYCTRL3). La funzione del gestore eventi, OnRangeMouseDown
, viene dichiarata nel file di intestazione della classe dialog ( CMyDlg
) come:
BOOL OnRangeMouseDown(UINT CtlID, short MouseButton, short Shift,
long x, long y);
Il codice seguente è definito nel file di implementazione della classe dialog.
BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
ON_EVENT_RANGE(CMyDlg, IDC_MYCTRL1, IDC_MYCTRL3, -605, OnRangeMouseDown,
VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
Requisiti
Intestazione afxdisp.h
ON_EVENT_REFLECT
La macro ON_EVENT_REFLECT, se utilizzata nella mappa sink eventi della classe wrapper di un controllo OLE, riceve gli eventi generati dal controllo prima che vengano gestiti dal contenitore del controllo.
ON_EVENT_REFLECT(theClass, dispid, pfnHandler, vtsParams)
Parametri
theClass
Classe a cui appartiene la mappa sink di eventi.
dispid
ID dispatch dell'evento generato dal controllo .
pfnHandler
Puntatore a una funzione membro che gestisce l'evento. Questa funzione deve avere un tipo restituito BOOL e i tipi di parametro che corrispondono ai parametri dell'evento (vedere vtsParams). La funzione deve restituire TRUE per indicare che l'evento è stato gestito; in caso contrario FALSE.
vtsParams
Sequenza di costanti VTS_ che specifica i tipi dei parametri per l'evento. Si tratta delle stesse costanti utilizzate nelle voci della mappa dispatch, ad esempio DISP_FUNCTION.
Osservazioni:
L'argomento vtsParams è un elenco di valori separati da spazi dalle costanti VTS_ .
Uno o più di questi valori separati da spazi (non da virgole) specifica l'elenco di parametri della funzione. Ad esempio:
VTS_I2 VTS_BOOL
specifica un elenco contenente un numero intero breve seguito da un valore BOOL.
Per un elenco delle costanti VTS_ , vedere EVENT_CUSTOM.
Requisiti
Intestazione afxdisp.h
ON_PROPNOTIFY
Utilizzare la macro ON_PROPNOTIFY per definire una voce della mappa sink eventi per la gestione delle notifiche delle proprietà da un controllo OLE.
ON_PROPNOTIFY(theClass, id, dispid, pfnRequest, pfnChanged)
Parametri
theClass
Classe a cui appartiene la mappa sink di eventi.
id
ID del controllo OLE.
dispid
ID di invio della proprietà coinvolta nella notifica.
pfnRequest
Puntatore a una funzione membro che gestisce la OnRequestEdit
notifica per questa proprietà. Questa funzione deve avere un tipo restituito BOOL e un parametro BOOL* . Questa funzione deve impostare il parametro su TRUE per consentire alla proprietà di modificare e FALSE in modo che non sia consentito. La funzione dovrebbe restituire TRUE per indicare che la notifica è stata gestita; in caso contrario FALSE.
pfnChanged
Puntatore a una funzione membro che gestisce la OnChanged
notifica per questa proprietà. La funzione deve avere un tipo restituito BOOL e un parametro UINT. La funzione deve restituire TRUE per indicare che la notifica è stata gestita; in caso contrario FALSE.
Osservazioni:
L'argomento vtsParams è un elenco di valori separati da spazi dalle costanti VTS_ . Uno o più di questi valori separati da spazi (non da virgole) specifica l'elenco di parametri della funzione. Ad esempio:
VTS_I2 VTS_BOOL
specifica un elenco contenente un numero intero breve seguito da un valore BOOL.
Per un elenco delle costanti VTS_ , vedere EVENT_CUSTOM.
ON_PROPNOTIFY_RANGE
Utilizzare la macro ON_PROPNOTIFY_RANGE per definire una voce della mappa sink eventi per la gestione delle notifiche delle proprietà da qualsiasi controllo OLE con UN ID di controllo all'interno di un intervallo contiguo di ID.
ON_PROPNOTIFY_RANGE(theClass, idFirst, idLast, dispid, pfnRequest, pfnChanged)
Parametri
theClass
Classe a cui appartiene la mappa sink di eventi.
idFirst
ID del controllo del primo controllo OLE nell'intervallo.
idLast
ID del controllo dell'ultimo controllo OLE nell'intervallo.
dispid
ID di invio della proprietà coinvolta nella notifica.
pfnRequest
Puntatore a una funzione membro che gestisce la OnRequestEdit
notifica per questa proprietà. Questa funzione deve avere un BOOL
tipo restituito e BOOL*
UINT
parametri. La funzione deve impostare il parametro su TRUE per consentire alla proprietà di modificare e FALSE per non consentire. La funzione deve restituire TRUE per indicare che la notifica è stata gestita; in caso contrario FALSE.
pfnChanged
Puntatore a una funzione membro che gestisce la OnChanged
notifica per questa proprietà. La funzione deve avere un BOOL
tipo restituito e un UINT
parametro. La funzione deve restituire TRUE per indicare che la notifica è stata gestita; in caso contrario FALSE.
Requisiti
Intestazione afxdisp.h
ON_PROPNOTIFY_REFLECT
La macro ON_PROPNOTIFY_REFLECT, se utilizzata nella mappa sink eventi della classe wrapper di un controllo OLE, riceve le notifiche delle proprietà inviate dal controllo prima che vengano gestite dal contenitore del controllo.
ON_PROPNOTIFY_REFLECT(theClass, dispid, pfnRequest, pfnChanged)
Parametri
theClass
Classe a cui appartiene la mappa sink di eventi.
dispid
ID di invio della proprietà coinvolta nella notifica.
pfnRequest
Puntatore a una funzione membro che gestisce la OnRequestEdit
notifica per questa proprietà. Questa funzione deve avere un tipo restituito BOOL e un parametro BOOL* . Questa funzione deve impostare il parametro su TRUE per consentire alla proprietà di modificare e FALSE in modo che non sia consentito. La funzione dovrebbe restituire TRUE per indicare che la notifica è stata gestita; in caso contrario FALSE.
pfnChanged
Puntatore a una funzione membro che gestisce la OnChanged
notifica per questa proprietà. La funzione deve avere un tipo restituito BOOL e nessun parametro. La funzione dovrebbe restituire TRUE per indicare che la notifica è stata gestita; in caso contrario FALSE.
Requisiti
Intestazione afxdisp.h