ActiveX – kontejnery ovládacích prvků: Ošetření událostí v ovládacím prvku ActiveX
Tento článek popisuje instalaci obslužné rutiny událostí pro ovládací prvky ActiveX v kontejneru ovládacího prvku ActiveX pomocí okna Vlastnosti.Obslužné rutiny událostí slouží k oznámení (z řízení) některých událostí a provádět některé akce v odpovědi.Toto oznámení se nazývá "pálení" událost.
[!POZNÁMKA]
V tomto článku používá dialogovou ActiveX ovládacího prvku kontejneru projekt s názvem kontejneru a vložený ovládací prvek s názvem Kula jako příklady postupů a kód.
Pomocí tlačítko události v okně Vlastnosti, můžete vytvořit mapování událostí, které se mohou vyskytnout v aplikaci kontejneru ovládacího prvku ActiveX.Tato mapa, nazývaná "jímka mapou události,'' je vytvářejí a spravují pomocí Visual C++ při přidání obslužných rutin událostí ovládacího prvku kontejneru třídy.Každé obslužné rutině události prováděny s položkou mapy událostí, mapuje konkrétní události členské funkce obslužné rutiny události kontejneru.Tato funkce obslužné rutiny události je volána při zadané události vyvolání objektem ActiveX ovládacího prvku.
Další informace o mapách jímky událostí, viz Mapy jímky událostí v Knihovny tříd.
Obslužná rutina události změny v projektu
Když použijete okno Vlastnosti k přidání obslužné rutiny události, mapou události jímky definována a definovaného ve vašem projektu.Následující příkazy jsou přidána do ovládacího prvku.Soubor CPP poprvé obslužná rutina události je přidána.Tento kód deklaruje mapou události jímky pro třídy dialogového okna (v tomto případě CContainerDlg):
BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
...
END_EVENTSINK_MAP()
Jak používat okno Vlastnosti k přidání události, události mapovat položky (ON_EVENT) je přidána mapa jímky událostí a obslužná rutina události je přidána funkce implementace kontejneru (.Soubor CPP).
Následující příklad deklaruje obslužné rutiny události nazvané OnClickInCircCtrl, pro kontrolu Kula ClickIn události:
BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
ON_EVENT(CContainerDlg, IDC_CIRCCTRL1, 1 /* ClickIn */, OnClickInCircctrl1,
VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
Navíc je přidána následující šablonu do CContainerDlg implementace třídy (.Soubor CPP) členské funkce obslužné rutiny události:
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;
}
Další informace o makra jímky událostí, viz Mapy jímky událostí v Knihovny tříd.
Chcete-li vytvořit funkci zpracování událostí
Ze zobrazení tříd vyberte dialogové okno třídy, která obsahuje ovládací prvek ActiveX.V tomto příkladu pomocí CContainerDlg.
V okně Vlastnosti klepněte na tlačítko Události.
V okně Vlastnosti vyberte ID ovládacího prvku vloženého ovládacího prvku ActiveX.V tomto příkladu pomocí IDC_CIRCCTRL1.
Okno Vlastnosti zobrazí seznam událostí, které lze spalovat vložený ovládací prvek ActiveX.Všechny členské funkce tučně již byla přiřazena funkce obslužné rutiny.
Vyberte událost má dialogové okno třídy pro zpracování.V tomto příkladu vyberte klepněte na.
Vyberte z rozevíracího seznamu na pravé straně, <Přidat > ClickCircctrl1.
Poklepejte na položku ze zobrazení tříd zobrazíte kód obslužné rutiny události v implementaci nové obslužné rutiny (.Soubor CPP) CContainerDlg.