Aggiunta di una proprietà al controllo (Esercitazione di ATL, parte 3)
IPolyCtl
è l'interfaccia che contiene i metodi e le proprietà personalizzati del controllo e vi verrà aggiunta una proprietà.
Per aggiungere le definizioni delle proprietà al progetto
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.
Per aggiornare i metodi get e put
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.
Tornare al passaggio 2 | al passaggio 4