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
En la Vista de clases, expanda la rama
Polygon
.Haga clic con el botón derecho en
IPolyCtl
.En el menú contextual, haga clic en Agregar y después en Agregar propiedad. Aparecerá el asistente para Agregar propiedad.
Escriba
Sides
como Nombre de propiedad.En la lista desplegable Tipo de propiedad, seleccione
short
.Haga clic en Aceptar para terminar de agregar la propiedad.
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);
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
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;
Implemente los métodos
Get
yPut
. Las declaraciones de funciónget_Sides
yput_Sides
se han agregado a PolyCtl.h. Ahora agregue el código paraget_Sides
yput_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