Dodawanie właściwości do kontrolki (ALT — Samouczek, część 3)
IPolyCtl
to interfejs, który zawiera niestandardowe metody i właściwości kontrolki, i dodasz do niego właściwość.
Aby dodać definicje właściwości do projektu
W widoku klasy rozwiń
Polygon
gałąź.Kliknij prawym przyciskiem myszy pozycję
IPolyCtl
.W menu skrótów kliknij pozycję Dodaj, a następnie kliknij pozycję Dodaj właściwość. Zostanie wyświetlony kreator Dodawania właściwości .
Wpisz
Sides
jako nazwę właściwości.Z listy rozwijanej Typ właściwości wybierz pozycję
short
.Kliknij przycisk OK , aby zakończyć dodawanie właściwości.
W Eksplorator rozwiązań otwórz plik Polygon.idl i zastąp następujące wiersze na końcu interfejsu
IPolyCtl : IDispatch
: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);
W Eksplorator rozwiązań otwórz plik PolyCtl.h i dodaj następujące wiersze po definicji :
m_clrFillColor
short m_nSides; STDMETHOD(get_Sides)(short* pval); STDMETHOD(put_Sides)(short newval);
Mimo że masz teraz funkcje szkieletu do ustawiania i pobierania właściwości oraz zmiennej do przechowywania właściwości, należy odpowiednio zaimplementować funkcje.
Aby zaktualizować metody get i put
Ustaw wartość domyślną .
m_nSides
Ustaw kształt domyślny na trójkąt, dodając linię do konstruktora w pliku PolyCtl.h:m_nSides = 3;
Zaimplementuj
Get
metody iPut
. Deklaracjeget_Sides
funkcji iput_Sides
zostały dodane do biblioteki PolyCtl.h. Teraz dodaj kod dlaget_Sides
polecenia iput_Sides
, aby PolyCtl.cpp przy użyciu następujących elementów: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
zwraca bieżącą wartość Sides
właściwości za pośrednictwem pVal
wskaźnika. W metodzie put_Sides
kod gwarantuje, że użytkownik ustawia Sides
właściwość na akceptowalną wartość. Wartość minimalna musi wynosić 3, a ponieważ dla każdej strony zostanie użyta tablica punktów, 100 jest rozsądnym limitem maksymalnej wartości.
Masz teraz właściwość o nazwie Sides
. W następnym kroku zmienisz kod rysunku, aby go używał.
Powrót do kroku 2 | Do kroku 4