Controlli ActiveX MFC: aggiunta di eventi predefiniti a un controllo ActiveX
Gli eventi predefiniti sono diversi dagli eventi personalizzati in quanto automaticamente generati dalla classe COleControl. COleControl contiene le funzioni membro predefinite che generano gli eventi deriva da azioni comuni. Alcune azioni comuni implementate da COleControl includono singolo e fare doppio clic sul controllo, gli eventi della tastiera e sulle modifiche nello stato dei pulsanti. Le voci della mappa eventi per gli eventi predefiniti sono sempre preceduti dal prefisso di EVENT_STOCK.
Eventi predefiniti supportati dalla procedura l'aggiunta guidata evento
La classe di COleControl fornisce dieci eventi predefiniti, elencati nella tabella seguente. È possibile specificare gli eventi desiderati nel controllo mediante Aggiunta guidata evento.
Eventi predefiniti
Evento |
Generare funzione |
Commenti |
---|---|---|
Fare clic su |
FireClick (void) |
Quando il controllo acquisisce il mouse, qualsiasi BUTTONUP (a sinistra, l'utilizzo, o a destra) il messaggio generato viene ricevuto e il pulsante viene rilasciato sul controllo. Gli eventi predefiniti MouseDown e MouseUp si verificano prima di questo evento. Voce della mappa eventi: EVENT_STOCK_CLICK( ) |
DblClick |
FireDblClick (void) |
Come per il clic ma generato quando un messaggio di BUTTONDBLCLK vengono ricevuti. Voce della mappa eventi: EVENT_STOCK_DBLCLICK( ) |
Errore |
void FireError( SCODE scode, LPCSTR lpszDescription, UINT nHelpID = 0 ) |
Generato quando si verifica un errore nel controllo ActiveX rientra nell'ambito di una chiamata al metodo o di un accesso della proprietà. Voce della mappa eventi: EVENT_STOCK_ERROREVENT( ) |
KeyDown |
void FireKeyDown( short nChar, short nShiftState ) |
Generato quando un messaggio di WM_KEYDOWN o di WM_SYSKEYDOWN vengono ricevuti. Voce della mappa eventi: EVENT_STOCK_KEYDOWN( ) |
KeyPress |
void FireKeyPress( short* pnChar ) |
Generato quando un messaggio di WM_CHAR vengono ricevuti. Voce della mappa eventi: EVENT_STOCK_KEYPRESS( ) |
KeyUp |
void FireKeyUp( short nChar, short nShiftState ) |
Generato quando un messaggio di WM_KEYUP o di WM_SYSKEYUP vengono ricevuti. Voce della mappa eventi: EVENT_STOCK_KEYUP( ) |
MouseDown |
void FireMouseDown( short nButton, short nShiftState, float x, float y ) |
Generata se una BUTTONDOWN (a sinistra, l'utilizzo, o a destra) vengono ricevuti. Il mouse capture immediatamente prima che l'evento viene generato. Voce della mappa eventi: EVENT_STOCK_MOUSEDOWN( ) |
MouseMove |
void FireMouseMove( short nButton, short nShiftState, float x, float y ) |
Generato quando un messaggio di WM_MOUSEMOVE vengono ricevuti. Voce della mappa eventi: EVENT_STOCK_MOUSEMOVE( ) |
MouseUp |
void FireMouseUp( short nButton, short nShiftState, float x, float y ) |
Generata se una BUTTONUP (a sinistra, l'utilizzo, o a destra) vengono ricevuti. Il mouse capture viene rilasciato prima che l'evento venga generato. Voce della mappa eventi: EVENT_STOCK_MOUSEUP( ) |
ReadyStateChange |
FireReadyStateChange (void) |
Generato quando le transizioni di un controllo sullo stato pronto seguente a causa della quantità di dati hanno ricevuto. Voce della mappa eventi: EVENT_STOCK_READYSTATECHANGE( ) |
Aggiunta di un evento predefinito utilizzando la procedura l'aggiunta guidata evento
L'aggiunta di eventi predefiniti richiede meno lavoro che gli eventi personalizzati dal momento che consentono di effettivo evento viene gestito automaticamente dalla classe base, COleControlaggiungi. La procedura riportata di seguito viene aggiunto un evento predefinito a un controllo compilato utilizzando Creazione guidata controllo ActiveX MFC. L'evento, denominato KeyPress, viene generato quando il tasto viene premuto e il controllo è attivo. Questa procedura può essere utilizzata per aggiungere altri eventi predefiniti. Sostituire il nome di evento predefinito per selezionare KeyPress.
Per aggiungere il immagazzini KeyPress l'evento utilizzando la procedura l'aggiunta guidata evento
Caricare il progetto del controllo.
In Visualizzazione classi, fare clic con il pulsante destro del mouse sulla classe del controllo ActiveX per aprire il menu di scelta rapida.
Dal menu di scelta rapida, fare clic Aggiungi quindi fare clic Aggiungi evento.
Verrà avviata la procedura guidata evento.
Nell'elenco a discesa di Nome evento, KeyPressselezionato.
Scegliere Fine.
Aggiungere le modifiche della procedura guidata evento per gli eventi predefiniti
Poiché gli eventi predefiniti vengono gestiti dalla classe di base control, la procedura l'aggiunta guidata evento non modifica la dichiarazione di classe in alcun modo. Aggiungere l'evento alla mappa eventi del controllo e selezionare una voce nel file di .IDL. La riga seguente viene aggiunta alla mappa eventi del controllo, che si trova nel file di implementazione della classe del controllo (.CPP):
EVENT_STOCK_KEYPRESS()
Aggiungendo il codice genera un evento KeyPress quando un messaggio di WM_CHAR viene ricevuto e il controllo è attivo. Nell'evento KeyPress può essere generato altre volte chiamando la funzione di esempio l'attivazione, ad esempio FireKeyPress) dal codice del controllo.
La procedura l'aggiunta guidata evento aggiungere la seguente riga di codice del file .IDL del controllo:
[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);
Questa riga consente di associare l'evento KeyPress con il relativo ID di invio standard e del contenitore visualizzazione dell'evento KeyPress.