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

  1. Erweitern Sie in der Klassenansicht die Polygon Verzweigung.

  2. Klicken Sie mit der rechten Maustaste IPolyCtl.

  3. Klicken Sie im Kontextmenü auf "Hinzufügen" und dann auf "Eigenschaft hinzufügen". Der Assistent zum Hinzufügen von Eigenschaften wird angezeigt.

  4. Geben Sie Sides als Eigenschaftsname ein.

  5. Wählen Sie in der Dropdownliste des Eigenschaftentyps die Option shortaus.

  6. Klicken Sie auf "OK ", um das Hinzufügen der Eigenschaft abzuschließen.

  7. Ö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);
    
  8. Ö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

  1. 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;
    
  2. Implementieren Sie die Methoden Get und Put. Die get_Sides Deklarationen und put_Sides Funktionen wurden polyCtl.h hinzugefügt. Fügen Sie nun den Code für get_Sides und put_Sides zu PolyCtl.cpp mit den folgenden Optionen 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

Siehe auch

Tutorial