Contenitori di controlli ActiveX: Gestione di eventi da un controllo ActiveX

In questo articolo viene illustrato come utilizzare la Finestra Proprietà per installare i gestori eventi per i controlli ActiveX in un contenitore di controlli ActiveX.I gestori eventi vengono utilizzati per ricevere le notifiche (il controllo) di determinati eventi e per eseguire un'azione nella risposta.Questa notifica viene denominata “consentono dell'evento.

[!NOTA]

In questo articolo viene utilizzato un progetto a finestre di contenitore di controlli ActiveX denominato Container e un controllo incorporato denominato Circ ad esempio nelle routine e nel codice.

Utilizzando gli eventi button nella Finestra Proprietà, è possibile creare un mapping di eventi che possono verificarsi nell'applicazione di contenitore di controlli ActiveX.Questo mapping, denominato “una mappa del sink di eventi,„ viene creato e gestito da Visual C++ quando si aggiungono i gestori eventi alla classe del contenitore di controlli.Ogni gestore eventi, implementato con una voce della mappa eventi, esegue il mapping di un evento specifico a una funzione membro del gestore eventi del contenitore.Questa funzione del gestore eventi viene chiamata quando si verifica l'evento specificato viene generato dall'oggetto del controllo ActiveX.

Per ulteriori informazioni sulle mappe del sink di eventi, vedere Mappe del sink di eventiin riferimenti alla libreria di classi.

Modifiche del gestore eventi al progetto

Quando si utilizza la Finestra Proprietà per aggiungere i gestori eventi, una mappa del sink di eventi è dichiarata e definita nel progetto.Le istruzioni seguenti vengono aggiunte al file del controllo .CPP la prima volta un gestore eventi viene aggiunto.Questo codice dichiara una mappa del sink di eventi della classe della finestra di dialogo (in questo caso, CContainerDlg):

BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)


...


END_EVENTSINK_MAP()

Quando si utilizza la Finestra Proprietà per aggiungere eventi, una voce della mappa eventi (ON_EVENT) viene aggiunto alla mappa del sink di eventi e a una funzione del gestore eventi viene aggiunto al file dell'implementazione del contenitore (.CPP).

Nell'esempio seguente viene dichiarato un gestore eventi, denominato OnClickInCircCtrl, per l'evento di ClickIn del controllo di Circ:

BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
   ON_EVENT(CContainerDlg, IDC_CIRCCTRL1, 1 /* ClickIn */, OnClickInCircctrl1, 
      VTS_I4 VTS_I4)
END_EVENTSINK_MAP()

Inoltre, il modello seguente viene aggiunto al file di implementazione della classe di CContainerDlg (.CPP) per la funzione membro del gestore eventi:

BOOL CContainerDlg::OnClickInCircctrl1(OLE_XPOS_PIXELS nX, OLE_YPOS_PIXELS nY)
{
   // use nX and nY here
   TRACE(_T("nX = %d, nY = %d\n"), nX, nY);
   return TRUE;
}

Per ulteriori informazioni sulle macro del sink di evento, vedere Mappe del sink di eventiin riferimenti alla libreria di classi.

Per creare una funzione del gestore eventi

  1. In Visualizzazione classi, selezionare la classe della finestra di dialogo contenente il controllo ActiveX.Per questo esempio, utilizzare CContainerDlg.

  2. Nella finestra Proprietà fare clic sul pulsante Eventi.

  3. Nella Finestra Proprietà, selezionare ID di controllo ActiveX incorporato.Per questo esempio, utilizzare IDC_CIRCCTRL1.

    La Finestra Proprietà viene visualizzato un elenco di eventi che possono essere generati dal controllo ActiveX incorporato.Qualsiasi funzione membro visualizzata in grassetto già dispone di funzioni di gestione assegnate.

  4. Selezionare l'evento dalla classe della finestra di dialogo per gestire.Per questo esempio, Clickselezionato.

  5. Nell'elenco a discesa a destra, <Add> ClickCircctrl1selezionato.

  6. Fare doppio clic sulla nuova funzione di gestione in Visualizzazione classi per passare al codice del gestore eventi nel file di implementazione (.CPP) di CContainerDlg.

Vedere anche

Concetti

Contenitori di controlli ActiveX