Controles ActiveX de MFC: Implementación avanzada de propiedad
En este artículo se describe los temas relacionados con implementar propiedades avanzadas en un control ActiveX:
Readonly y propiedades de solo escritura
Devolver códigos de error de una propiedad
Readonly y propiedades de solo escritura
El asistente para agregar proporciona un método rápido y fácil implementar readonly o propiedades de solo escritura para el control.
Para implementar un solo lectura o una propiedad de sólo escritura
Cargue el proyecto de control.
En la vista de clases, expanda el nodo de la biblioteca del control.
Haga clic con el botón secundario en el nodo de la interfaz para el control (el segundo nodo el nodo de biblioteca) para abrir el menú contextual.
En el menú contextual, haga clic agregar y haga clic en Agregar propiedad.
Esto abre Asistente para agregar propiedades.
En el cuadro de Property Name , escriba el nombre de la propiedad.
Para Implementation Type, haga clic en Get/Set Methods.
En el cuadro de Property Type , seleccione el tipo adecuado para la propiedad.
Si desea que una propiedad de sólo lectura, borre el nombre de función determinado.Si desea que una propiedad de sólo escritura, borre el nombre de función get.
Haga clic en Finalizar.
Al hacer esto, el asistente para agregar inserta la función SetNotSupported o GetNotSupported sobre cómo asigna entrada en lugar de un conjunto normal o función get.
Si desea cambiar una propiedad existente para que sea de sólo lectura o de sólo escritura, puede modificar el envío asignado manualmente y quitar el conjunto innecesario u obtener la función de la clase del control.
Si desea una propiedad sea condicional de sólo lectura o de sólo escritura (por ejemplo, sólo cuando el control está trabajando en un modo determinado), puede proporcionar el conjunto o obtener la función, como normal, y llama a la función de SetNotSupported o de GetNotSupported en su caso.Por ejemplo:
void CMyAxUICtrl::SetMyProperty(SHORT newVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (m_bReadOnlyMode) // some control-specific state
{
SetNotSupported();
}
else
{
m_iPropVal = newVal; // set property as normal
SetModifiedFlag();
}
}
Este ejemplo de código llama a SetNotSupported si el miembro de datos de m_bReadOnlyMode es TRUE.Si FALSE, la propiedad se establece en el nuevo valor.
Devuelve los códigos de error De una propiedad
Para indicar que se ha producido un error al intentar obtener o establecer una propiedad, utilice la función de COleControl::ThrowError , que toma SCODE (código de estado) como parámetro.Puede utilizar SCODE predefinido o definir uno propio.Para obtener una lista de s predefinida de SCODEe instrucciones para definir s personalizada de SCODE, vea Controlar errores en el control ActiveX de IU en los controles ActiveX de caso: Temas avanzados.
Las funciones auxiliares existen para la mayoría de s predefinida común de SCODE, como COleControl::SetNotSupported, COleControl::GetNotSupported, y COleControl::SetNotPermitted.
[!NOTA]
ThrowError está diseñado para usarse sólo como medio para devolver un error dentro de una propiedad obtiene o establece la función o método de automatización.Estos son los únicos veces que el controlador de excepciones adecuado aparecerá en la pila.
Para obtener más información sobre excepciones de informe en otras áreas de código, vea COleControl::FireError y la sección Controlar errores en el control ActiveX de IU en Controles ActiveX de caso: Temas avanzados.