Kontenery kontrolek ActiveX: obsługa zdarzeń z kontrolki ActiveX

W tym artykule omówiono używanie okna Właściwości (w widoku klasy) do instalowania programów obsługi zdarzeń dla kontrolek ActiveX w kontenerze kontrolek ActiveX. Programy obsługi zdarzeń są używane do odbierania powiadomień (z kontrolki) niektórych zdarzeń i wykonywania pewnych akcji w odpowiedzi. To powiadomienie jest nazywane "wyzwalanie" zdarzenia.

Ważne

ActiveX to starsza technologia, która nie powinna być używana do tworzenia nowych rozwiązań. Aby uzyskać więcej informacji na temat nowoczesnych technologii zastępujących activex, zobacz Kontrolki ActiveX.

Uwaga

W tym artykule użyto projektu kontenera kontrolek ActiveX opartego na oknie dialogowym o nazwie Container i osadzonej kontrolki o nazwie Circ jako przykłady procedur i kodu.

Za pomocą przycisku Zdarzenia w oknie Właściwości (w widoku klasy) można utworzyć mapę zdarzeń, które mogą wystąpić w aplikacji kontenera kontrolek ActiveX. Ta mapa, nazywana "mapą ujścia zdarzeń", jest tworzona i obsługiwana przez program Visual C++ podczas dodawania procedur obsługi zdarzeń do klasy kontenera sterowania. Każda procedura obsługi zdarzeń zaimplementowana za pomocą wpisu mapy zdarzeń mapuje określone zdarzenie do funkcji składowej programu obsługi zdarzeń kontenera. Ta funkcja obsługi zdarzeń jest wywoływana, gdy określone zdarzenie jest wyzwalane przez obiekt kontrolki ActiveX.

Aby uzyskać więcej informacji na temat map ujścia zdarzeń, zobacz Mapy ujścia zdarzeń w dokumentacji biblioteki klas.

Modyfikacje programu obsługi zdarzeń w projekcie

Gdy używasz okna Właściwości do dodawania procedur obsługi zdarzeń, mapa ujścia zdarzeń jest zadeklarowana i zdefiniowana w projekcie. Następujące instrukcje są dodawane do kontrolki . Plik CPP po raz pierwszy dodawany jest program obsługi zdarzeń. Ten kod deklaruje mapę ujścia zdarzeń dla klasy okna dialogowego (w tym przypadku CContainerDlg):

BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
END_EVENTSINK_MAP()

Gdy do dodawania zdarzeń używasz okna Właściwości , do mapy zdarzeń () zostanie dodany wpis mapy zdarzeń (ON_EVENT), a do implementacji kontenera zostanie dodana funkcja obsługi zdarzeń (. Plik CPP).

W poniższym przykładzie zadeklarowana jest procedura obsługi zdarzeń o nazwie OnClickInCircCtrl, dla zdarzenia kontrolki ClickIn Circ:

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

Ponadto następujący szablon jest dodawany do implementacji CContainerDlg klasy (. Plik CPP) dla funkcji składowej programu obsługi zdarzeń:

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;
}

Aby uzyskać więcej informacji na temat makr ujścia zdarzeń, zobacz Mapy ujścia zdarzeń w dokumentacji biblioteki klas.

Aby utworzyć funkcję obsługi zdarzeń

  1. W widoku klasy wybierz klasę okna dialogowego zawierającą kontrolkę ActiveX. W tym przykładzie użyj polecenia CContainerDlg.

  2. W oknie Właściwości kliknij przycisk Zdarzenia.

  3. W oknie Właściwości wybierz identyfikator kontrolki osadzonej kontrolki ActiveX. W tym przykładzie użyj polecenia IDC_CIRCCTRL1.

    W oknie Właściwości zostanie wyświetlona lista zdarzeń, które mogą zostać wyzwolone przez osadzoną kontrolkę ActiveX. Każda funkcja składowa wyświetlana pogrubioną ma już przypisane do niej funkcje obsługi.

  4. Wybierz zdarzenie, które ma być obsługiwane przez klasę okna dialogowego. W tym przykładzie wybierz pozycję Kliknij.

  5. W polu listy rozwijanej po prawej stronie wybierz pozycję Dodaj kliknij przyciskCircctrl1<.>

  6. Kliknij dwukrotnie nową funkcję obsługi z widoku klasy, aby przejść do kodu procedury obsługi zdarzeń w implementacji (. Plik CPP z .CContainerDlg

Zobacz też

Kontenery kontrolek ActiveX