Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Атрибут oleautomation указывает, что интерфейс совместим с автоматизацией.
[
oleautomation,
uuid(string-uuid)
[ , interface-attribute-list]
]
interface interface-name : base-interface
{
...
}
Параметры
-
string-uuid
-
Задает строку UUID, созданную служебной программой Uuidgen.
-
interface-attribute-list
-
Указывает другие атрибуты, которые применяются к интерфейсу в целом.
-
имя интерфейса
-
Указывает имя интерфейса.
-
базовый интерфейс
-
Указывает имя интерфейса автоматизации, из которого этот производный интерфейс наследует функции-члены, коды состояния и атрибуты интерфейса. Все интерфейсы автоматизации являются производными от IUnknown или IDispatch.
Замечания
Параметры и возвращаемые типы, указанные для членов интерфейса [oleautomation] , должны быть совместимыми с автоматизацией, как указано в следующей таблице.
| Тип | Описание |
|---|---|
| булево | Элемент данных, который может иметь значение VARIANT_TRUE или VARIANT_FALSE. Размер соответствует VARIANT_BOOL. |
| беззнаковый char | 8-разрядный элемент данных без знака. |
| двойной | 64-разрядное число с плавающей запятой IEEE. |
| float | 32-разрядное число с плавающей запятой IEEE. |
| int | Целое число со знаком, размер которого зависит от системы. На 32-разрядных платформах MIDL обрабатывает int как 32-разрядное целое число со знаком. |
| длинный | 32-разрядное целое число со знаком. |
| короткий | 16-разрядное целое число со знаком. |
| BSTR | Строка с префиксом длины, как описано в разделе BSTR службы автоматизации. |
| ВАЛЮТА | 8-байтовое, фиксированное число с плавающей запятой. |
| ДАТА | 64-разрядное число дней с 30 декабря 1899 года с плавающей запятой. |
| SCODE | Для 16-разрядных систем встроенный тип ошибки, соответствующий VT_ERROR. |
| Перечисление typedefmyenum | Целое число со знаком, размер которого зависит от системы. |
| Интерфейс IDispatch * | Указатель на интерфейс IDispatch (VT_DISPATCH). |
| Интерфейс IUnknown * | Указатель на интерфейс, который не является производным от IDispatch (VT_UNKNOWN). (Любой интерфейс OLE может быть представлен его интерфейсом IUnknown .) |
| dispinterfaceTypename * | Указатель на интерфейс, производный от IDispatch (VT_DISPATCH). |
| CoclassTypename * | Указатель на имя сокласса (VT_UNKNOWN). |
| [oleautomation] interfaceTypename * | Указатель на интерфейс, производный от IUnknown. |
| SAFEARRAY(TypeName) | TypeName — это любой из указанных выше типов. Массив этих типов. |
| Typename* | TypeName — это любой из указанных выше типов. Указатель на тип. |
| Decimal | 96-разрядное целое число без знака, масштабируемое переменной мощностью 10. Десятичный тип данных, предоставляющий размер и масштаб для числа (как в координатах). |
Параметр совместим с автоматизацией, если его тип является типом, совместимым с автоматизацией, указателем на тип, совместимый с автоматизацией, или SAFEARRAY типа, совместимого с автоматизацией.
Возвращаемый тип совместим со службой автоматизации, если его тип — HRESULT, SCODE или void. Тем не менее, MIDL требует, чтобы методы интерфейса возвращали HRESULT или SCODE. Возврат void создает ошибку компилятора.
Член совместим со службой автоматизации, если его возвращаемый тип и все его параметры совместимы с автоматизацией.
Интерфейс совместим со службой автоматизации, если он является производным от IDispatch или IUnknown, он имеет атрибут [oleautomation] , а все его записи JSONL совместимы с автоматизацией. Для 32-разрядных платформ соглашение о вызове для всех методов в интерфейсе должно быть STDCALL. Для 16-разрядных систем все методы должны иметь соглашение о вызовах CDECL.
Каждое dispinterface неявно совместимо с автоматизацией. Поэтому не следует использовать атрибут [oleautomation] для dispinterface.
Атрибут [oleautomation] недоступен при компиляции с помощью переключателя MIDL компилятора /osf .
Флаги
TYPEFLAG_FOLEAUTOMATION
Примеры
library Hello
{
importlib("stdole32.tlb");
[
uuid(12345678-1234-1234-1234-123456789ABC),
helpstring("Application object for the Hello application."),
oleautomation,
dual
]
interface IHello : IDispatch
{
// Interface definition statements.
}
// Other library definition statements.
}
См. также