Función CoTreatAsClass (objbase.h)
Establece o quita una emulación, en la que los objetos de una clase se tratan como objetos de una clase diferente.
Sintaxis
HRESULT CoTreatAsClass(
[in] REFCLSID clsidOld,
[in] REFCLSID clsidNew
);
Parámetros
[in] clsidOld
CLSID del objeto que se va a emular.
[in] clsidNew
CLSID del objeto que debe emular el objeto original. Esto reemplaza cualquier emulación existente para clsidOld. Este parámetro puede ser CLSID_NULL, en cuyo caso se quita cualquier emulación existente para clsidOld .
Valor devuelto
Esta función puede devolver los valores devueltos estándar E_INVALIDARG, así como los valores siguientes.
Código devuelto | Descripción |
---|---|
|
La emulación se estableció o quitó correctamente. |
|
El parámetro clsidOld no está registrado correctamente en la base de datos de registro. |
|
Error al leer de la base de datos de registro. |
|
Error al escribir en la base de datos de registro. |
Comentarios
Esta función establece la entrada TreatAs en el Registro para el objeto especificado, lo que permite que otra aplicación emule el objeto. La emulación permite que una aplicación abra y edite un objeto de un formato diferente, a la vez que conserva el formato original del objeto. Una vez establecida esta entrada, cada vez que cualquier función como CoGetClassObject especifica el CLSID original del objeto (clsidOld), se reenvía de forma transparente al nuevo CLSID (clsidNew), iniciando así la aplicación asociada con el CLSID treatAs . Cuando se guarda el objeto, se puede guardar en su formato nativo, lo que puede provocar la pérdida de ediciones no admitidas por el formato original.
Si la aplicación admite la emulación, llame a CoTreatAsClass en las situaciones siguientes:
- En respuesta a una solicitud de usuario final (mediante un cuadro de diálogo de conversión) que un objeto especificado se trata como un objeto de una clase diferente (un objeto creado bajo una aplicación se ejecuta en otra aplicación, al tiempo que conserva la información de formato original).
- En un programa de instalación, para registrar que una clase de objetos se trate como objetos de otra clase.
Un ejemplo del uso de CoTreatAsClass en un programa de instalación sería en una versión actualizada de una aplicación. Cuando se actualiza la aplicación, los objetos creados con la versión anterior se pueden activar y tratar como objetos de la nueva versión, a la vez que se conserva la información de formato anterior. Esto le permitiría dar al usuario la opción de convertir al guardarlo o guardarlo en el formato anterior, posiblemente perdiendo información de formato no disponible en la versión anterior.
Un resultado de establecer una emulación es que, al enumerar verbos, como en la implementación del método IOleObject::EnumVerbs en el controlador predeterminado, esto enumeraría los verbos de clsidNew en lugar de clsidOld.
Para asegurarse de que la información de emulación existente se quita al instalar una aplicación, los programas de instalación deben llamar a CoTreatAsClass, estableciendo el parámetro clsidNew en CLSID_NULL para quitar cualquier emulación existente para las clases que instalen.
Si no hay ningún CLSID asignado a la clave AutoTreatAs en el Registro, al establecer clsidNew y clsidOld en el mismo valor se quita la entrada TreatAs , por lo que no hay emulación. Si hay un CLSID asignado a la clave AutoTreatAs , ese CLSID se asigna a la clave TreatAs .
CoTreatAsClass no valida si existe actualmente una entrada del Registro adecuada para clsidNew.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | objbase.h |
Library | Ole32.lib |
Archivo DLL | Ole32.dll |