Sdílet prostřednictvím


MFC – ovládací prvky ActiveX: Přidání přizpůsobených vlastností

Vlastní vlastnosti se liší od vlastností akcií v tom, že vlastní vlastnosti ještě nejsou implementovány COleControl třídou. Vlastní vlastnost slouží k zveřejnění určitého stavu nebo vzhledu ovládacího prvku technologie ActiveX programátoru pomocí ovládacího prvku.

Tento článek popisuje, jak přidat vlastní vlastnost do ovládacího prvku technologie ActiveX pomocí Průvodce přidáním vlastnosti a vysvětluje výsledné úpravy kódu. Témata:

Vlastní vlastnosti mají čtyři varianty implementace: členské proměnné, členské proměnné s oznámením, metody Get/Set a parametrizované.

  • Implementace členské proměnné

    Tato implementace představuje stav vlastnosti jako členské proměnné ve třídě ovládacího prvku. Implementace členské proměnné použijte, pokud není důležité vědět, kdy se hodnota vlastnosti změní. Z těchto tří typů tato implementace vytvoří nejmenší množství kódu podpory pro vlastnost. Makro pro položku mapování odeslání pro implementaci členské proměnné je DISP_PROPERTY.

  • Proměnná člena s implementací oznámení

    Tato implementace se skládá z členské proměnné a funkce oznámení vytvořené Průvodce přidáním vlastnosti. Funkce oznámení je automaticky volána rozhraním po změně hodnoty vlastnosti. Proměnnou člena s implementací oznámení použijte, když potřebujete být upozorněni po změně hodnoty vlastnosti. Tato implementace vyžaduje více času, protože vyžaduje volání funkce. Makro pro zadání mapy odeslání pro tuto implementaci je DISP_PROPERTY_NOTIFY.

  • Implementace metod Get/Set

    Tato implementace se skládá z dvojice členských funkcí ve třídě řízení. Implementace Get/Set Metody automaticky volá get členské funkce, když uživatel ovládacího prvku požaduje aktuální hodnotu vlastnosti a Set členské funkce, když uživatel ovládacího prvku požádá o změny vlastnosti. Tuto implementaci použijte, pokud potřebujete vypočítat hodnotu vlastnosti během běhu, před změnou skutečné vlastnosti ověřte hodnotu předanou uživatelem ovládacího prvku nebo implementujte typ vlastnosti jen pro čtení nebo zápis. Makro pro zadání mapy odeslání pro tuto implementaci je DISP_PROPERTY_EX. Následující část Použití Průvodce přidáním vlastnosti přidat vlastní vlastnost používá CircleOffset vlastní vlastnost demonstrovat tuto implementaci.

  • Parametrizovaná implementace

    Parametrizovaná implementace je podporována Průvodce přidáním vlastnosti. Parametrizovaná vlastnost (někdy označovaná jako pole vlastností) se dá použít pro přístup k sadě hodnot prostřednictvím jedné vlastnosti ovládacího prvku. Makro pro zadání mapy odeslání pro tuto implementaci je DISP_PROPERTY_PARAM. Další informace o implementaci tohoto typu naleznete v tématu Implementace parametrizované vlastnosti v článku technologie ActiveX Ovládací prvky: Pokročilá témata.

Přidání vlastní vlastnosti pomocí Průvodce přidáním vlastnosti

Následující postup ukazuje přidání vlastní vlastnosti CircleOffset, která používá Get/Set Metody implementace. Vlastní vlastnost CircleOffset umožňuje uživateli ovládacího prvku posun kruhu od středu ohraničujícího obdélníku ovládacího prvku. Postup přidání vlastních vlastností s jinou implementací než Get/Set Metody je velmi podobný.

Stejný postup lze také použít k přidání dalších vlastních vlastností, které chcete použít. Nahraďte název vlastní vlastnosti názvem a parametry vlastnosti CircleOffset.

Přidání vlastní vlastnosti CircleOffset pomocí Průvodce přidáním vlastnosti

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

  2. V zobrazení tříd rozbalte uzel knihovny ovládacího prvku.

  3. Kliknutím pravým tlačítkem myši na uzel rozhraní ovládacího prvku (druhý uzel uzlu knihovny) otevřete místní nabídku.

  4. V místní nabídce klepněte na tlačítko Přidat a potom klepněte na tlačítko Přidat vlastnost.

    Tím se otevře Průvodce přidáním vlastnosti.

  5. Do pole Název vlastnosti zadejte CircleOffset.

  6. Pro typ implementace klepněte na tlačítko Get/Set Metody.

  7. V poli Typ vlastnosti vyberte short.

  8. Zadejte jedinečné názvy funkcí Get a Set nebo přijměte výchozí názvy.

  9. Klikněte na Finish (Dokončit).

Změny průvodce přidáním vlastností pro vlastní vlastnosti

Když přidáte vlastní vlastnost CircleOffset, Průvodce přidáním vlastnosti provede změny v záhlaví (. H) a implementace (. CPP) soubory třídy řízení.

Následující řádky jsou přidány do . Soubor H deklaruje dvě volané GetCircleOffset funkce a SetCircleOffset:

SHORT GetCircleOffset(void);
void SetCircleOffset(SHORT newVal);

Následující řádek se přidá do ovládacího prvku . IDL soubor:

[id(2), helpstring("property CircleOffset")] SHORT CircleOffset;
[id(3), helpstring("property MyProperty")] SHORT MyProperty;

Tento řádek přiřadí CircleOffset vlastnost konkrétní ID číslo, převzato z pozice metody v seznamu metod a vlastností Průvodce přidáním vlastnosti.

Kromě toho je do mapy dispečera přidán následující řádek (v sadě . CPP soubor třídy ovládacího prvku) k mapování CircleOffset vlastnost na dvě funkce obslužné rutiny ovládacího prvku:

DISP_PROPERTY_EX_ID(CMyAxUICtrl, "CircleOffset", dispidCircleOffset, GetCircleOffset, SetCircleOffset, VT_I2)

Nakonec se na konec kontroly přidají implementace GetCircleOffset funkcí a SetCircleOffset funkcí . CPP soubor. Ve většině případů upravíte funkci Get tak, aby vracela hodnotu vlastnosti. Funkce Set obvykle obsahuje kód, který by se měl spustit před nebo po změně vlastnosti.

void CMyAxUICtrl::SetCircleOffset(SHORT /*newVal*/)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   // TODO: Add your property handler code here

   SetModifiedFlag();
}

Všimněte si, že Průvodce přidáním vlastnosti automaticky přidá volání SetModifiedFlag do textu funkce Set. Voláním této funkce označíte ovládací prvek jako upravený. Pokud byl ovládací prvek změněn, při uložení kontejneru se uloží jeho nový stav. Tato funkce by měla být volána vždy, když se vlastnost uložená jako součást trvalého stavu ovládacího prvku změní hodnotu.

Viz také

MFC – ovládací prvky ActiveX
MFC – ovládací prvky ActiveX: Vlastnosti
MFC – ovládací prvky ActiveX: Metody
COleControl – třída