Hinzufügen einer Eigenschaft zum Steuerelement (ATL-Lernprogramm, Teil 3)
IPolyCtl
ist die Schnittstelle, die die benutzerdefinierten Methoden und Eigenschaften des Steuerelements enthält, und Sie fügen ihr eine Eigenschaft hinzu.
So fügen Sie dem Projekt die Eigenschaftendefinitionen hinzu
Erweitern Sie in der Klassenansicht die
Polygon
Verzweigung.Klicken Sie mit der rechten Maustaste
IPolyCtl
.Klicken Sie im Kontextmenü auf "Hinzufügen" und dann auf "Eigenschaft hinzufügen". Der Assistent zum Hinzufügen von Eigenschaften wird angezeigt.
Geben Sie
Sides
als Eigenschaftsname ein.Wählen Sie in der Dropdownliste des Eigenschaftentyps die Option
short
aus.Klicken Sie auf "OK ", um das Hinzufügen der Eigenschaft abzuschließen.
Öffnen Sie in Projektmappen-Explorer Polygon.idl, und ersetzen Sie die folgenden Zeilen am Ende der
IPolyCtl : IDispatch
Schnittstelle:short get_Sides(); void set_Sides(short value);
durch
[propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal); [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
Öffnen Sie aus Projektmappen-Explorer PolyCtl.h, und fügen Sie die folgenden Zeilen nach der Definition von
m_clrFillColor
:short m_nSides; STDMETHOD(get_Sides)(short* pval); STDMETHOD(put_Sides)(short newval);
Obwohl Sie jetzt über Skelettfunktionen verfügen, um die Eigenschaft und eine Variable zum Speichern der Eigenschaft festzulegen und abzurufen, müssen Sie die Funktionen entsprechend implementieren.
So aktualisieren Sie die Get- und Put-Methoden
Legen Sie den Standardwert von
m_nSides
. Legen Sie die Standardform als Dreieck fest, indem Sie dem Konstruktor in PolyCtl.h eine Linie hinzufügen:m_nSides = 3;
Implementieren Sie die Methoden
Get
undPut
. Dieget_Sides
Deklarationen undput_Sides
Funktionen wurden polyCtl.h hinzugefügt. Fügen Sie nun den Code fürget_Sides
undput_Sides
zum PolyCtl.cpp mit den folgenden Schritten hinzu: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")); } }
Die get_Sides
Methode gibt den aktuellen Wert der Sides
Eigenschaft über den pVal
Zeiger zurück. In der put_Sides
Methode stellt der Code sicher, dass der Benutzer die Sides
Eigenschaft auf einen akzeptablen Wert festlegt. Das Minimum muss 3 sein, und da für jede Seite ein Array von Punkten verwendet wird, ist 100 ein vernünftiger Grenzwert für einen Maximalwert.
Sie haben jetzt eine Eigenschaft mit dem Namen Sides
. Im nächsten Schritt ändern Sie den Zeichencode so, dass er verwendet wird.
Zurück zu Schritt 2 | Weiter zu Schritt 4