ActiveX – kontejnery ovládacích prvků: Ošetření událostí v ovládacím prvku ActiveX
Tento článek popisuje použití okna Vlastnosti (v zobrazení třídy) k instalaci obslužných rutin událostí pro technologie ActiveX ovládací prvky v kontejneru ovládacího prvku technologie ActiveX. Obslužné rutiny událostí se používají k příjmu oznámení (z ovládacího prvku) určitých událostí a provedení určité akce v reakci. Toto oznámení se označuje jako "vyvolání" události.
Důležité
technologie ActiveX je starší technologie, která by se neměla používat pro nový vývoj. Další informace o moderních technologiích, které nahrazují technologie ActiveX, najdete v tématu technologie ActiveX Ovládací prvky.
Poznámka
Tento článek používá dialogový technologie ActiveX řízení projektu kontejneru s názvem Container a vložený ovládací prvek s názvem Circ jako příklady v postupech a kódu.
Pomocí tlačítka Události v okně Vlastnosti (v zobrazení třídy) můžete vytvořit mapu událostí, ke kterým může dojít v aplikaci kontejneru technologie ActiveX řízení. Tato mapa, označovaná jako "mapa jímky událostí", je vytvořena a udržována jazykem Visual C++ při přidávání obslužných rutin událostí do třídy kontejneru ovládacího prvku. Každá obslužná rutina události implementovaná s položkou mapy událostí mapuje konkrétní událost na členovou funkci obslužné rutiny události kontejneru. Tato funkce obslužné rutiny události je volána při spuštění zadané události technologie ActiveX řídicí objekt.
Další informace o mapách jímek událostí naleznete v tématu Mapy jímky událostí v referenční dokumentaci knihovny tříd.
Úpravy obslužné rutiny události projektu
Když použijete okno Vlastnosti k přidání obslužných rutin událostí, je mapa jímky událostí deklarována a definována v projektu. Do ovládacího prvku jsou přidány následující příkazy . Soubor CPP při prvním přidání obslužné rutiny události Tento kód deklaruje mapu jímky událostí pro třídu dialogového okna (v tomto případě CContainerDlg
):
BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
END_EVENTSINK_MAP()
Když k přidání událostí použijete okno Vlastnosti , přidá se položka mapy událostí (ON_EVENT
) do mapy jímky událostí a do implementace kontejneru se přidá funkce obslužné rutiny události (. CPP) soubor.
Následující příklad deklaruje obslužnou rutinu události volanou OnClickInCircCtrl
pro událost ovládacího prvku ClickIn
Circ:
BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
ON_EVENT(CContainerDlg, IDC_CIRCCTRL1, 1 /* ClickIn */, OnClickInCircctrl1,
VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
Kromě toho je do CContainerDlg
implementace třídy přidána následující šablona (. Soubor CPP) pro členovu funkci 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 makrech jímky událostí naleznete v tématu Mapy jímky událostí v referenční dokumentaci knihovny tříd.
Vytvoření funkce obslužné rutiny události
V zobrazení třídy vyberte třídu dialogového okna, která obsahuje ovládací prvek technologie ActiveX. V tomto příkladu použijte
CContainerDlg
.V okně Vlastnosti klikněte na tlačítko Události .
V okně Vlastnosti vyberte ID ovládacího prvku vložené technologie ActiveX. V tomto příkladu použijte
IDC_CIRCCTRL1
.V okně Vlastnosti se zobrazí seznam událostí, které lze aktivovat vloženým ovládacím technologie ActiveX ovládacím prvku. Každá členová funkce zobrazená tučně už má přiřazené funkce obslužné rutiny.
Vyberte událost, kterou má třída dialogového okna zpracovat. V tomto příkladu vyberte Kliknout.
V rozevíracím seznamu vpravo vyberte <Přidat> ClickCircctrl1.
Poklikejte na novou funkci obslužné rutiny ze zobrazení třídy a přejděte do kódu obslužné rutiny události v implementaci (. CPP) soubor s příponou
CContainerDlg
.