Sdílet prostřednictvím


MFC – ovládací prvky ActiveX: Přidání vlastních událostí

Vlastní události se liší od uložené události nejsou aktivována automaticky podle třídy, COleControl.Vlastní události rozpozná určité akce, určí vývojář ovládacího prvku, jako událost.Položek mapování událostí, vlastní události jsou reprezentovány EVENT_CUSTOM makra.V následující části implementuje vlastní událost pro projekt ovládacího prvku ActiveX, který byl vytvořen pomocí Průvodce ovládacím prvkem ActiveX.

Přidání vlastních událostí se Průvodce přidáním události

Následující procedura přidá určitou vlastní událost ClickIn.Tento postup slouží k přidání dalších vlastních událostí.Nahraďte váš vlastní název události a její parametry pro ClickIn události název a parametry.

Chcete-li přidat ClickIn vlastní událost pomocí Průvodce přidání události

  1. Načtěte projektu ovládacího prvku.

  2. V zobrazení tříd klikněte pravým tlačítkem myši třídy ovládacího prvku ActiveX otevřete místní nabídku.

  3. V místní nabídce klepněte na příkaz Přidat a potom klepněte na tlačítko Přidat událost.

    Otevře se Průvodce přidání události.

  4. V název události pole, nejprve vyberte libovolné existující událost a pak klepněte na vlastní rádiové tlačítko a potom zadejte ClickIn.

  5. V interní název zadejte název události funkce pálení.V tomto příkladu použijte výchozí hodnotu podle Průvodce přidání události (FireClickIn).

  6. Přidat parametr nazývá xCoord (typ OLE_XPOS_PIXELS), použití Název parametru a Typ parametru prvky.

  7. Přidat druhý parametr, nazývá yCoord (typ OLE_YPOS_PIXELS).

  8. Klepněte na tlačítko Dokončit vytvořit událost.

Přidat událost změny Průvodce pro vlastní události

Přidáte-li vlastní událost, Průvodce přidání události změní třídu ovládacího prvku.H.CPP, a.IDL soubory.Následující ukázky kódu jsou specifické pro danou událost 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 události ClickIn a parametry definovány, pomocí Průvodce přidání události.

Navíc je přidána následující řádek do mapy událostí pro ovládací prvek umístěn v provedení (.Soubor CPP) třídy ovládacího prvku:

EVENT_CUSTOM_ID("ClickIn", eventidClickIn, FireClickIn, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

Tento kód mapuje události ClickIn vložené funkce FireClickIn, předávání parametrů definovaných pomocí Průvodce přidání události.

Navíc následující řádek je přidán do ovládacího prvku.Soubor IDL:

[id(1)] void ClickIn(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Tento řádek přiřadí události ClickIn zvláštní identifikační číslo, přijatá z pozice na událost v seznamu událostí Průvodce přidání události.Položky v seznamu událostí umožňuje předvídat události kontejner.Například jej může poskytovat kód obslužné rutiny, které mají být provedeny při vyvolání události.

Volání FireClickIn

Nyní, když jste přidali ClickIn vlastní událost pomocí Průvodce přidání události, musíte rozhodnout, pokud tato událost má být aktivována.To se provádí voláním FireClickIn dojde na příslušnou akci.Pro tuto diskusi, ovládací prvek používá InCircle pracovat uvnitř WM_LBUTTONDOWN popisovač zprávy požární ClickIn událost, když uživatel klepne do oblasti kruhový nebo eliptický.Následující procedura přidá WM_LBUTTONDOWN obslužnou rutinu.

Chcete-li přidat popisovač zprávy pomocí Průvodce přidání události

  1. Načtěte projektu ovládacího prvku.

  2. V zobrazení tříd vyberte vaše třída ovládacího prvku ActiveX.

  3. V okně Vlastnosti klikněte na Zprávy.

    Okno Vlastnosti zobrazí seznam zpráv, které mohou být zpracovány pomocí ovládacího prvku ActiveX.Všechny zprávy tučně již má přiřazenou funkci obslužné rutiny.

  4. V okně Vlastnosti vyberte zprávu, kterou chcete zpracovat.V tomto příkladu vyberte WM_LBUTTONDOWN.

  5. Vyberte z rozevíracího seznamu na pravé straně, <Přidat > OnLButtonDown.

  6. Poklepejte na položku v zobrazení tříd zobrazíte kód obslužné rutiny zpráv v implementaci nové obslužné rutiny (.Soubor CPP) ovládacího prvku ActiveX.

Následující kód volá vzorku InCircle fungovat při každém kliknutí na levé tlačítko myši v okně ovládacího prvku.V tomto příkladu naleznete v WM_LBUTTONDOWN rutinu, OnLButtonDown, v Kula vzorku abstraktní.

void CMyAxUICtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
   if (InCircle(point))
      FireClickIn(point.x, point.y);

    COleControl::OnLButtonDown(nFlags, point);
}

[!POZNÁMKA]

Pokud Průvodce přidání události vytvoří zprávu obslužné rutiny pro tlačítko akce myši, volání základní třídy stejný popisovač zprávy je automaticky přidán.Neodstraňujte tento hovor.Pokud váš ovládací prvek používá některý z myši Burzovní zprávy, musí být volána obslužné rutiny zpráv v základní třídě zajistit, že je správně zpracována zachycení myši.

V následujícím příkladu vyvolá událost, při klepnutí dochází pouze v kruhové nebo eliptické oblasti v ovládacím prvku.K dosažení tohoto chování, můžete umístit InCircle funkce v implementaci ovládacího prvku (.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);
}

Musíte také přidat následující prohlášení InCircle funkce 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 uložené události však nemůže implementovat obě ve stejném ovládacím prvku.Můžete například vytvořit vlastní událost jen klepněte na tlačítko, které neaktivuje při uložená událost klepnutí by obvykle požární.Může pak požární události Click kdykoli voláním funkce jeho pálení.

Následující procedura přidá vlastní klepněte na událost.

Chcete-li přidat vlastní události, která používá název uložená událost

  1. Načtěte projektu ovládacího prvku.

  2. V zobrazení tříd klikněte pravým tlačítkem myši třídy ovládacího prvku ActiveX otevřete místní nabídku.

  3. V místní nabídce klepněte na příkaz Přidat a potom klepněte na tlačítko Přidat událost.

    Otevře se Průvodce přidání události.

  4. V Název události rozevírací seznam, vyberte název uložená událost.V tomto příkladu vyberte klepněte na.

  5. Pro Typ události, vyberte vlastní.

  6. Klepněte na tlačítko Dokončit vytvořit událost.

  7. Volání FireClick na příslušných místech ve vašem kódu.

Viz také

Referenční dokumentace

Třída COleControl

Koncepty

MFC – ovládací prvky ActiveX

MFC – ovládací prvky ActiveX: Metody