Ovládací prvky MFC ActiveX: Přidání vlastní události
Vlastní události se liší od události akcií, nejsou automaticky aktivována pomocí třídy COleControl.Vlastní události rozpozná určité akce, určí vývojář řízení jako událost.Mapa položky události pro vlastní události jsou představovány EVENT_CUSTOM makro.V následující části implementuje vlastní události pro projektu ovládací prvek ActiveX, která byla vytvořena pomocí průvodce ovládací prvek ActiveX.
Přidání vlastní události se události Průvodce
Následující postup přidá určité vlastní události ClickIn.Tento postup můžete přidat další vlastní události.Nahraďte název vaší vlastní události a její parametry pro název události ClickIn a parametry.
Přidat vlastní události ClickIn pomocí Průvodce přidáním událostí
Načtení ovládacího prvku projektu.
V zobrazení třídy pravým tlačítkem otevřete místní nabídku třídy ovládacího prvku ActiveX.
V místní nabídce klepněte na příkaz Přidat a klepněte na tlačítko Přidat událost.
Otevře se Průvodce přidáním událostí.
V název události pole, nejprve vyberte libovolný existující událost a pak klepněte na vlastní přepínací tlačítko a zadejte ClickIn.
V vnitřní název zadejte název události funkce pálení.V tomto příkladu použijte výchozí hodnotu poskytnutých průvodce přidat události (FireClickIn).
Přidat parametr nazvaný xCoord (typ OLE_XPOS_PIXELS), použití Název parametru a Typ parametru ovládací prvky.
Přidat druhý parametr, nazývá yCoord (typ OLE_YPOS_PIXELS).
Klepněte na tlačítko Dokončit vytvořit událost.
Událost změny Průvodce přidat vlastní události
Při přidání vlastních událostí událost Průvodce přidáním třídy řízení provedeny změny.H.CPP, a.IDL soubory.Následující ukázky kódu jsou specifické události ClickIn.
Následující řádky jsou přidány do záhlaví (.H) soubor třídy ovládacího prvku:
void FireClickIn(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
FireEvent(eventidClickIn, EVENT_PARAM(VTS_XPOS_PIXELS VTS_YPOS_PIXELS), xCoord, yCoord);
}
Tento kód deklaruje vložené funkce nazývá FireClickIn , který volá COleControl::FireEvent s ClickIn událostí a parametry definované, pomocí Průvodce přidáním událostí.
Kromě toho je následující řádek do mapy událostí pro ovládací prvek umístěn v provádění (.CPP) soubor třídy ovládacího prvku:
EVENT_CUSTOM_ID("ClickIn", eventidClickIn, FireClickIn, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
Tento kód vložené funkce mapuje události ClickIn FireClickIn, předávání parametrů definované pomocí Průvodce přidáním událostí.
Nakonec je následující řádek do ovládacího prvku.IDL souboru:
[id(1)] void ClickIn(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Tento řádek přiřadí určité číslo ID z pozice na událost v seznamu Průvodce přidáním událostí událost události ClickIn.Položka v seznamu událostí umožňuje kontejneru události předvídat.Může například poskytnout spuštěn při vyvolání události rutiny kód.
Volání FireClickIn
Nyní, když jste přidali vlastní události ClickIn pomocí Průvodce přidáním událostí, musíte rozhodnout, při této události je spalovat.Provést voláním FireClickIn při výskytu příslušné akce.Pro tuto diskusi používá ovládací prvek InCircle uvnitř funkce WM_LBUTTONDOWN popisovači zprávy požární ClickIn událost, když uživatel klepne do oblasti kruhové nebo eliptické.Přidá následující postup WM_LBUTTONDOWN popisovač.
Zpracování zprávy přidat pomocí Průvodce přidáním událostí
Načtení ovládacího prvku projektu.
Třída zobrazení vyberte třídy ovládacího prvku ActiveX.
V okně Vlastnosti klikněte na Zprávy.
Zobrazí se okno Vlastnosti seznamu zpráv, které mohou být zpracovány pomocí ovládacího prvku ActiveX.Všechny zprávy tučně již má funkci zpracování přiřazena.
V okně Vlastnosti vyberte zprávu, kterou chcete zpracovat.Vyberte například WM_LBUTTONDOWN.
Vyberte z rozevíracího seznamu pole vpravo, <Add> OnLButtonDown.
Poklepejte na novou funkci zpracování v zobrazení přejít na kód zpracování zprávy v implementaci třídy (.Soubor CPP) ovládacího prvku ActiveX.
Následující kód vzorku volání InCircle při každém klepnutí levým tlačítkem myši v okně Ovládací funkce.Tento vzorek lze nalézt v WM_LBUTTONDOWN funkci zpracování OnLButtonDownv oběžník vzorku abstraktní.
void CMyAxUICtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
if (InCircle(point))
FireClickIn(point.x, point.y);
COleControl::OnLButtonDown(nFlags, point);
}
[!POZNÁMKA]
Vytvoří průvodce přidat události rutiny zpráv pro akce tlačítek myši, je automaticky přidán volání stejného procesu zpracování zpráv základní třídy.Neodstraňujte tento hovor.Pokud ovládací prvek používá myš Burzovní zprávy, musí být volána obslužné rutiny zpráv v základní třídě zajistit správné zpracování zachycení myši.
V následujícím příkladu je událost, při klepnutí dochází pouze v kruhové nebo eliptické oblasti ovládacího prvku.Pro dosažení tohoto chování je možné umístit InCircle funkce ovládacího prvku provádění (.Soubor CPP):
VARIANT_BOOL CMyAxUICtrl::InCircle(CPoint& point)
{
CRect rc;
GetClientRect(rc);
// Determine radii
double a = (rc.right - rc.left) / 2;
double b = (rc.bottom - rc.top) / 2;
// Determine x, y
double x = point.x - (rc.left + rc.right) / 2;
double y = point.y - (rc.top + rc.bottom) / 2;
// Apply ellipse formula
return ((x * x) / (a * a) + (y * y) / (b * b) <= 1);
}
Je také potřeba přidat následující prohlášení InCircle funkci ovládacího prvku záhlaví (.H) soubor:
VARIANT_BOOL InCircle(CPoint& point);
Vlastní události s názvy akcií
Můžete vytvořit vlastní události se stejným názvem jako burzovní události však obě ve stejné ovládací prvek není implementovat.Můžete například vytvořit vlastní události nazývají neaktivuje při akcií událost klepněte by normálně požární klepněte.Událost klepnutí by pak požáru kdykoli voláním funkce jeho pálení.
Následující postup přidá vlastní klepněte na událost.
Přidat vlastní události, která používá název akcií události
Načtení ovládacího prvku projektu.
V zobrazení třídy pravým tlačítkem otevřete místní nabídku třídy ovládacího prvku ActiveX.
V místní nabídce klepněte na příkaz Přidat a klepněte na tlačítko Přidat událost.
Otevře se Průvodce přidáním událostí.
V Název události rozevírací seznam, vyberte název akcií události.V tomto příkladu vyberte na tlačítko.
Pro Typ události, vyberte vlastní.
Klepněte na tlačítko Dokončit vytvořit událost.
Volání FireClick na příslušných místech v kódu.