Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describen los temas relacionados con la implementación de propiedades avanzadas en un control ActiveX.
Importante
ActiveX es una tecnología heredada que no se debe usar para el desarrollo nuevo. Para obtener más información sobre las tecnologías modernas que sustituyen a ActiveX, consulte Controles ActiveX.
propiedades de Read-Only y Write-Only
El Asistente para agregar propiedades proporciona un método rápido y sencillo para implementar propiedades de solo lectura o de solo escritura para el control.
Para implementar una propiedad de solo lectura o de solo escritura
Cargue el proyecto del control.
En la Vista de clases, expanda el nodo biblioteca del control.
Haga clic con el botón derecho en el nodo de interfaz del control (el segundo nodo del nodo de biblioteca) para abrir el menú contextual.
En el menú contextual, haga clic en Agregar y, a continuación, haga clic en Agregar propiedad.
Se abrirá el Asistente para agregar propiedades.
En el cuadro Nombre de propiedad, escriba el nombre de la propiedad.
En Tipo de implementación, haga clic en Obtener o establecer métodos.
En el cuadro Tipo de propiedad , seleccione el tipo adecuado para la propiedad .
Si desea una propiedad de solo lectura, desactive el nombre de la función Set. Si desea una propiedad de solo escritura, desactive el nombre de la función Get.
Haga clic en Finalizar
Al hacerlo, el Asistente para agregar propiedades inserta la función SetNotSupported o GetNotSupported en la entrada del mapa de distribución en lugar de una función Set o Get normal.
Si desea cambiar una propiedad existente para que sea de solo lectura o de solo escritura, puede editar el mapa de distribución manualmente y quitar la función Set o Get innecesarias de la clase de control.
Si desea que una propiedad sea de solo lectura condicional o de solo escritura (por ejemplo, solo cuando el control funciona en un modo determinado), puede proporcionar la función Set o Get, como normal, y llamar a la SetNotSupported función o GetNotSupported cuando corresponda. 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 m_bReadOnlyMode datos es TRUE. Si es FALSE, la propiedad se establece en el nuevo valor.
Devolver códigos de error de una propiedad
Para indicar que se ha producido un error al intentar obtener o establecer una propiedad, use la COleControl::ThrowError función , que toma un SCODE (código de estado) como parámetro. Puede usar un SCODE predefinido o definir uno de los suyos propios. Para obtener una lista de los SCODEs predefinidos e instrucciones para definir los SCODEs personalizados, consulte Control de errores en el control ActiveX en el artículo Controles ActiveX: Temas avanzados.
Existen funciones auxiliares para los SCODEs predefinidos más comunes, como COleControl::SetNotSupported, COleControl::GetNotSupported y COleControl::SetNotPermitted.
Nota:
ThrowError está diseñado para usarse solo como medio para devolver un error desde la función Get o Set de una propiedad o un método de automatización. Estas son las únicas veces que el controlador de excepciones adecuado estará presente en la pila.
Para obtener más información sobre cómo notificar excepciones en otras áreas del código, vea COleControl::FireError y la sección Control de errores en el control ActiveX en el artículo Controles ActiveX: Temas avanzados.
Consulte también
Controles ActiveX de MFC
Controles ActiveX de MFC: Propiedades
Controles ActiveX de MFC: métodos
Clase COleControl