Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Устанавливает или удаляет эмуляцию, в которой объекты одного класса обрабатываются как объекты другого класса.
Синтаксис
HRESULT CoTreatAsClass(
[in] REFCLSID clsidOld,
[in] REFCLSID clsidNew
);
Параметры
[in] clsidOld
ИДЕНТИФИКАТОР CLSID эмулируемого объекта.
[in] clsidNew
ИДЕНТИФИКАТОР CLSID объекта, который должен эмулировать исходный объект. Это заменяет все существующие эмуляции для clsidOld. Этот параметр можно CLSID_NULL, и в этом случае удаляется любая существующая эмуляция для clsidOld .
Возвращаемое значение
Эта функция может возвращать стандартные возвращаемые значения E_INVALIDARG, а также следующие значения.
| Код возврата | Описание |
|---|---|
|
Эмуляция успешно установлена или удалена. |
|
Параметр clsidOld неправильно зарегистрирован в базе данных регистрации. |
|
Ошибка при чтении из базы данных регистрации. |
|
Ошибка записи в базу данных регистрации. |
Комментарии
Эта функция задает запись TreatAs в реестре для указанного объекта, позволяя эмулировать объект другим приложением. Эмуляция позволяет приложению открывать и редактировать объект другого формата, сохраняя при этом исходный формат объекта. После установки этой записи, когда какая-либо функция, например CoGetClassObject , задает исходный ИДЕНТИФИКАТОР CLSID объекта (clsidOld), она прозрачно перенаправляется в новый ИДЕНТИФИКАТОР CLSID (clsidNew), тем самым запуская приложение, связанное с CLSID TreatAs . При сохранении объекта его можно сохранить в собственном формате, что может привести к потере изменений, не поддерживаемых исходным форматом.
Если приложение поддерживает эмуляцию, вызовите CoTreatAsClass в следующих ситуациях:
- В ответ на запрос конечного пользователя (через диалоговое окно преобразования), что указанный объект рассматривается как объект другого класса (объект, созданный в одном приложении, запускается в другом приложении, сохраняя при этом исходные сведения о формате).
- В программе установки необходимо зарегистрировать, что один класс объектов будет рассматриваться как объекты другого класса.
Пример использования CoTreatAsClass в программе установки может быть в обновленной версии приложения. При обновлении приложения объекты, созданные в более ранней версии, можно активировать и рассматривать как объекты новой версии, сохраняя при этом предыдущие сведения о формате. Это позволит пользователю выполнить преобразование при сохранении или сохранить его в предыдущем формате, что может привести к потере сведений о формате, недоступных в более старой версии.
Одним из результатов настройки эмуляции является то, что при перечислении глаголов, как в реализации метода IOleObject::EnumVerbs в обработчике по умолчанию, будет перечисление глаголов из clsidNew вместо clsidOld.
Чтобы гарантировать удаление существующих сведений об эмуляции при установке приложения, программы установки должны вызвать CoTreatAsClass, задав параметру clsidNew значение CLSID_NULL удалить все существующие эмуляции для устанавливаемых классов.
Если в реестре нет идентификатора CLSID, назначенного разделу AutoTreatAs , присвоить параметру clsidNew и clsidOld одно и то же значение, запись TreatAs удаляется, поэтому эмуляция отсутствует. Если ключу AutoTreatAs назначен clSID, этот ИДЕНТИФИКАТОР CLSID назначается ключу TreatAs .
CoTreatAsClass не проверяет, существует ли соответствующая запись реестра для clsidNew.
Требования
| Требование | Значение |
|---|---|
| Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
| Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
| Целевая платформа | Windows |
| Header | objbase.h |
| Библиотека | Ole32.lib |
| DLL | Ole32.dll |