Função CoTreatAsClass (objbase.h)

Estabelece ou remove uma emulação, na qual os objetos de uma classe são tratados como objetos de uma classe diferente.

Sintaxe

HRESULT CoTreatAsClass(
  [in] REFCLSID clsidOld,
  [in] REFCLSID clsidNew
);

Parâmetros

[in] clsidOld

O CLSID do objeto a ser emulado.

[in] clsidNew

O CLSID do objeto que deve emular o objeto original. Isso substitui qualquer emulação existente para clsidOld. Esse parâmetro pode ser CLSID_NULL, caso em que qualquer emulação existente para clsidOld é removida.

Retornar valor

Essa função pode retornar os valores retornados padrão E_INVALIDARG, bem como os valores a seguir.

Código de retorno Descrição
S_OK
A emulação foi estabelecida ou removida com êxito.
REGDB_E_CLASSNOTREG
O parâmetro clsidOld não está registrado corretamente no banco de dados de registro.
REGDB_E_READREGDB
Erro ao ler do banco de dados de registro.
REGDB_E_WRITEREGDB
Erro ao gravar no banco de dados de registro.

Comentários

Essa função define a entrada TreatAs no registro para o objeto especificado, permitindo que o objeto seja emulado por outro aplicativo. A emulação permite que um aplicativo abra e edite um objeto de um formato diferente, mantendo o formato original do objeto. Depois que essa entrada é definida, sempre que qualquer função como CoGetClassObject especifica o CLSID original do objeto (clsidOld), ele é encaminhado de forma transparente para o novo CLSID (clsidNew), iniciando assim o aplicativo associado ao TreatAs CLSID. Quando o objeto é salvo, ele pode ser salvo em seu formato nativo, o que pode resultar em perda de edições sem suporte no formato original.

Se o aplicativo der suporte à emulação, chame CoTreatAsClass nas seguintes situações:

  • Em resposta a uma solicitação do usuário final (por meio de uma caixa de diálogo de conversão) de que um objeto especificado seja tratado como um objeto de uma classe diferente (um objeto criado em um aplicativo será executado em outro aplicativo, mantendo as informações de formato original).
  • Em um programa de instalação, para registrar que uma classe de objetos seja tratada como objetos de uma classe diferente.
Um exemplo do primeiro caso é que um usuário final pode querer editar uma planilha criada por um aplicativo usando um aplicativo diferente que possa ler e gravar o formato de planilha do aplicativo original. Para um aplicativo que dá suporte à emulação, CoTreatAsClass pode ser chamado para implementar uma opção Tratar como em uma caixa de diálogo de conversão.

Um exemplo do uso de CoTreatAsClass em um programa de instalação seria em uma versão atualizada de um aplicativo. Quando o aplicativo é atualizado, os objetos criados com a versão anterior podem ser ativados e tratados como objetos da nova versão, mantendo as informações de formato anteriores. Isso permitiria que você desse ao usuário a opção de converter quando ele salvar ou salvá-lo no formato anterior, possivelmente perdendo informações de formato não disponíveis na versão mais antiga.

Um resultado da configuração de uma emulação é que, quando você enumera verbos, como na implementação do método IOleObject::EnumVerbs no manipulador padrão, isso enumera os verbos de clsidNew em vez de clsidOld.

Para garantir que as informações de emulação existentes sejam removidas quando você instala um aplicativo, seus programas de instalação devem chamar CoTreatAsClass, definindo o parâmetro clsidNew como CLSID_NULL para remover qualquer emulação existente para as classes instaladas.

Se não houver CLSID atribuído à chave AutoTreatAs no registro, definir clsidNew e clsidOld com o mesmo valor removerá a entrada TreatAs , portanto, não haverá emulação. Se houver um CLSID atribuído à chave AutoTreatAs , esse CLSID será atribuído à chave TreatAs .

CoTreatAsClass não valida se existe uma entrada de registro apropriada para clsidNew atualmente.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho objbase.h
Biblioteca Ole32.lib
DLL Ole32.dll

Confira também

CoGetTreatAsClass