Přidání vlastnosti do ovládacího prvku (ATL – tutoriál, část 3)
IPolyCtl
je rozhraní, které obsahuje vlastní metody a vlastnosti ovládacího prvku a přidáte do něj vlastnost.
Přidání definic vlastností do projektu
V zobrazení třídy rozbalte
Polygon
větev.Klikněte pravým tlačítkem myši
IPolyCtl
.V místní nabídce klepněte na tlačítko Přidat a potom klepněte na tlačítko Přidat vlastnost. Zobrazí se průvodce přidáním vlastnosti.
Zadejte
Sides
jako název vlastnosti.V rozevíracím seznamu typ vlastnosti vyberte
short
.Kliknutím na tlačítko OK dokončíte přidání vlastnosti.
V Průzkumník řešení otevřete Polygon.idl a na konci
IPolyCtl : IDispatch
rozhraní nahraďte následující řádky:short get_Sides(); void set_Sides(short value);
with
[propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal); [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
Z Průzkumník řešení otevřete PolyCtl.h a přidejte následující řádky za definici
m_clrFillColor
:short m_nSides; STDMETHOD(get_Sides)(short* pval); STDMETHOD(put_Sides)(short newval);
I když teď máte kostru funkcí pro nastavení a načtení vlastnosti a proměnné pro uložení vlastnosti, musíte odpovídajícím způsobem implementovat funkce.
Aktualizace metod get a put
Nastavte výchozí hodnotu
m_nSides
. Nastavte výchozí tvar jako trojúhelník přidáním čáry do konstruktoru v PolyCtl.h:m_nSides = 3;
Implementujte metody
Get
aPut
metody.put_Sides
Deklaraceget_Sides
funkce byly přidány do PolyCtl.h. Teď přidejte kód aget_Sides
put_Sides
PolyCtl.cpp následujícím kódem:STDMETHODIMP CPolyCtl::get_Sides(short* pVal) { *pVal = m_nSides; return S_OK; } STDMETHODIMP CPolyCtl::put_Sides(short newVal) { if (2 < newVal && newVal < 101) { m_nSides = newVal; return S_OK; } else { return Error(_T("Shape must have between 3 and 100 sides")); } }
Metoda get_Sides
vrátí aktuální hodnotu Sides
vlastnosti ukazatelem pVal
. put_Sides
V metodě kód zajistí, že uživatel nastaví Sides
vlastnost na přijatelnou hodnotu. Minimum musí být 3 a protože se pro každou stranu použije matice bodů, je 100 přiměřený limit maximální hodnoty.
Nyní máte vlastnost s názvem Sides
. V dalším kroku změníte kód výkresu tak, aby ho používal.