Dela via


Lägga till en egenskap i kontrollen (ATL-självstudie, del 3)

IPolyCtl är gränssnittet som innehåller kontrollens anpassade metoder och egenskaper, och du lägger till en egenskap i den.

Så här lägger du till egenskapsdefinitionerna i projektet

  1. I Klassvy, expandera Polygon-grenen.

  2. Högerklicka på IPolyCtl.

  3. Klicka på Lägg till på snabbmenyn och klicka sedan på Lägg till egenskap. Guiden Lägg till egenskap visas.

  4. Skriv Sides som egenskapsnamn.

  5. I listrutan med egenskapstyp väljer du short.

  6. Klicka på OK för att slutföra tillägg av egenskapen.

  7. Öppna Polygon.idl från Solution Explorer och ersätt följande rader i slutet av IPolyCtl : IDispatch gränssnittet:

    short get_Sides();
    void set_Sides(short value);
    

    med

    [propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal);
    [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
    
  8. Öppna PolyCtl.h från Solution Explorer och lägg till följande rader efter definitionen av m_clrFillColor:

    short m_nSides;
    STDMETHOD(get_Sides)(short* pval);
    STDMETHOD(put_Sides)(short newval);
    

Även om du nu har skelettfunktioner för att ange och hämta egenskapen och en variabel för att lagra egenskapen, måste du implementera funktionerna i enlighet med detta.

Uppdatera get- och put-metoderna

  1. Ange standardvärdet m_nSidesför . Gör standardformen till en triangel genom att lägga till en linje i konstruktorn i PolyCtl.h:

    m_nSides = 3;
    
  2. Implementera metoderna Get och Put. Funktionsdeklarationerna get_Sides och put_Sides har lagts till i PolyCtl.h. Lägg nu till koden för get_Sides och put_Sides till PolyCtl.cpp med följande:

    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"));
       }
    }
    

Metoden get_Sides returnerar egenskapens Sides aktuella värde via pekaren pVal . put_Sides I -metoden ser koden till att användaren anger Sides egenskapen till ett acceptabelt värde. Minimivärdet måste vara 3 och eftersom en matris med punkter används för varje sida är 100 en rimlig gräns för ett maximalt värde.

Nu har du en egenskap som heter Sides. I nästa steg ändrar du ritningskoden så att den används.

Tillbaka till steg 2 | Vidare till steg 4

Se även

Handledning