CoTreatAsClass, fonction (objbase.h)
Établit ou supprime une émulation, dans laquelle les objets d’une classe sont traités comme des objets d’une autre classe.
HRESULT CoTreatAsClass(
[in] REFCLSID clsidOld,
[in] REFCLSID clsidNew
);
[in] clsidOld
CLSID de l’objet à émuler.
[in] clsidNew
CLSID de l’objet qui doit émuler l’objet d’origine. Cela remplace toute émulation existante pour clsidOld. Ce paramètre peut être CLSID_NULL, auquel cas toute émulation existante pour clsidOld est supprimée.
Cette fonction peut retourner les valeurs de retour standard E_INVALIDARG, ainsi que les valeurs suivantes.
Code de retour | Description |
---|---|
|
L’émulation a été établie ou supprimée. |
|
Le paramètre clsidOld n’est pas correctement inscrit dans la base de données d’inscription. |
|
Erreur de lecture à partir de la base de données d’inscription. |
|
Erreur d’écriture dans la base de données d’inscription. |
Cette fonction définit l’entrée TreatAs dans le Registre pour l’objet spécifié, ce qui permet à l’objet d’être émulé par une autre application. L’émulation permet à une application d’ouvrir et de modifier un objet d’un autre format, tout en conservant le format d’origine de l’objet. Une fois cette entrée définie, chaque fois qu’une fonction telle que CoGetClassObject spécifie le CLSID (clsidOld) d’origine de l’objet, elle est transférée de manière transparente vers le nouveau CLSID (clsidNew), lançant ainsi l’application associée au CLSID TreatAs . Lorsque l’objet est enregistré, il peut être enregistré dans son format natif, ce qui peut entraîner la perte de modifications non prises en charge par le format d’origine.
Si votre application prend en charge l’émulation, appelez CoTreatAsClass dans les situations suivantes :
- En réponse à une demande de l’utilisateur final (via une boîte de dialogue de conversion), un objet spécifié doit être traité comme un objet d’une autre classe (un objet créé sous une application doit être exécuté sous une autre application, tout en conservant les informations de format d’origine).
- Dans un programme d’installation, pour inscrire qu’une classe d’objets soit traitée comme des objets d’une autre classe.
Un exemple d’utilisation de CoTreatAsClass dans un programme d’installation serait dans une version mise à jour d’une application. Lorsque l’application est mise à jour, les objets créés avec la version antérieure peuvent être activés et traités comme des objets de la nouvelle version, tout en conservant les informations de format précédentes. Cela vous permet de donner à l’utilisateur la possibilité de convertir lors de l’enregistrement, ou de l’enregistrer dans le format précédent, ce qui peut entraîner la perte d’informations de format non disponibles dans l’ancienne version.
L’un des résultats de la définition d’une émulation est que lorsque vous énumérez des verbes, comme dans l’implémentation de la méthode IOleObject ::EnumVerbs dans le gestionnaire par défaut, cela énumère les verbes de clsidNew au lieu de clsidOld.
Pour vous assurer que les informations d’émulation existantes sont supprimées lorsque vous installez une application, vos programmes d’installation doivent appeler CoTreatAsClass, en définissant le paramètre clsidNew sur CLSID_NULL pour supprimer toute émulation existante pour les classes qu’ils installent.
Si aucun CLSID n’est affecté à la clé AutoTreatAs dans le Registre, la définition de clsidNew et clsidOld sur la même valeur supprime l’entrée TreatAs , de sorte qu’il n’y a pas d’émulation. Si un CLSID est affecté à la clé AutoTreatAs , ce CLSID est affecté à la clé TreatAs .
CoTreatAsClass ne vérifie pas si une entrée de Registre appropriée pour clsidNew existe actuellement.
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | objbase.h |
Bibliothèque | Ole32.lib |
DLL | Ole32.dll |