Aggiunta di una proprietà al controllo (Esercitazione di ATL, parte 3)
In questo articolo
IPolyCtl
è l'interfaccia che contiene i metodi e le proprietà personalizzati del controllo e vi verrà aggiunta una proprietà.
In Visualizzazione classi espandere il
Polygon
ramo .Fare clic con il pulsante destro del mouse su
IPolyCtl
.Scegliere Aggiungi dal menu di scelta rapida e quindi fare clic su Aggiungi proprietà. Verrà visualizzata la procedura guidata Aggiungi proprietà .
Digitare
Sides
come Nome proprietà.Nell'elenco a discesa Tipo di proprietà selezionare
short
.Fare clic su OK per completare l'aggiunta della proprietà.
Da Esplora soluzioni aprire Polygon.idl e sostituire le righe seguenti alla fine dell'interfaccia
IPolyCtl : IDispatch
:short get_Sides(); void set_Sides(short value);
con
[propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal); [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
Da Esplora soluzioni aprire PolyCtl.h e aggiungere le righe seguenti dopo la definizione di
m_clrFillColor
:short m_nSides; STDMETHOD(get_Sides)(short* pval); STDMETHOD(put_Sides)(short newval);
Anche se ora si dispone di funzioni scheletro per impostare e recuperare la proprietà e una variabile per archiviare la proprietà, è necessario implementare le funzioni di conseguenza.
Impostare il valore predefinito di
m_nSides
. Impostare la forma predefinita su un triangolo aggiungendo una riga al costruttore in PolyCtl.h:m_nSides = 3;
Implementare i
Get
metodi ePut
. Le dichiarazioni diget_Sides
funzione eput_Sides
sono state aggiunte a PolyCtl.h. Aggiungere ora il codice perget_Sides
eput_Sides
a PolyCtl.cpp con quanto segue: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")); } }
Il get_Sides
metodo restituisce il valore corrente della Sides
proprietà tramite il pVal
puntatore. put_Sides
Nel metodo il codice garantisce che l'utente stia impostando la Sides
proprietà su un valore accettabile. Il valore minimo deve essere 3 e, poiché per ogni lato verrà usata una matrice di punti, 100 è un limite ragionevole per un valore massimo.
È ora disponibile una proprietà denominata Sides
. Nel passaggio successivo si modificherà il codice di disegno per usarlo.