Compartir a través de


Agregar una propiedad al control (Tutorial de ATL, Parte 3)

IPolyCtl es la interfaz que contiene los métodos y propiedades personalizados del control, y usted agregará una propiedad a él.

Para agregar las definiciones de propiedad al proyecto

  1. En la Vista de clases, expanda la rama Polygon.

  2. Haga clic con el botón derecho en IPolyCtl.

  3. En el menú contextual, haga clic en Agregar y después en Agregar propiedad. Aparecerá el asistente para Agregar propiedad.

  4. Escriba Sides como Nombre de propiedad.

  5. En la lista desplegable Tipo de propiedad, seleccione short.

  6. Haga clic en Aceptar para terminar de agregar la propiedad.

  7. Desde el Explorador de soluciones, abra Polygon.idl y reemplace las siguientes líneas al final de la interfaz 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);
    
  8. Desde el Explorador de soluciones, abra PolyCtl.h y agregue las siguientes líneas después de la definición de m_clrFillColor:

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

Aunque ahora tiene funciones de esqueleto para establecer y recuperar la propiedad y una variable para almacenarla, debe implementar las funciones en consecuencia.

Para actualizar los métodos get y put

  1. Establecer el valor predeterminado en m_nSides. Convierta la forma predeterminada en un triángulo agregando una línea al constructor en PolyCtl.h:

    m_nSides = 3;
    
  2. Implemente los métodos Get y Put. Las declaraciones de función get_Sides y put_Sides se han agregado a PolyCtl.h. Ahora agregue el código para get_Sides y put_Sides a PolyCtl.cpp con lo siguiente:

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

El método get_Sides devuelve el valor actual de la propiedad Sides a través del puntero pVal. En el método put_Sides, el código garantiza que el usuario establece la propiedad Sides en un valor aceptable. El mínimo debe ser 3 y, como se usará una matriz de puntos para cada lado, 100 es un límite razonable para un valor máximo.

Ahora tiene una propiedad denominada Sides. En el paso siguiente, cambiará el código del dibujo para usarlo.

Volver al paso 2 | Avanzar al paso 4

Consulte también

Tutorial