oleautomation 特性

oleautomation 属性指示接口与自动化兼容。

[ 
    oleautomation, 
    uuid(string-uuid)
    [ , interface-attribute-list] 
] 
interface interface-name : base-interface
{
    ...
}

参数

string-uuid

指定 Uuidgen 实用工具生成的 UUID 字符串。

interface-attribute-list

指定应用于接口的其他属性作为一个整体。

interface-name

指定接口的名称。

base-interface

指定自动化接口的名称,此派生接口从中继承成员函数、状态代码和接口属性。 所有自动化接口都派生自 IUnknownIDispatch

备注

[oleautomation] 接口的成员指定的参数和返回类型必须与自动化兼容,如下表所示。

类型 说明
boolean 可将值VARIANT_TRUE或VARIANT_FALSE的数据项。 大小对应于VARIANT_BOOL。
unsigned char 8 位无符号数据项。
double 64 位 IEEE 浮点数。
float 32 位 IEEE 浮点数。
int 带符号整数,其大小与系统相关。 在 32 位平台上,MIDL 将 int 视为 32 位有符号整数。
long 32 位带符号整数。
short 16 位有符号整数。
BSTR 长度前缀字符串,如自动化主题 BSTR 中所述。
CURRENCY 8 字节,固定浮点数。
DATE 自 1899 年 12 月 30 日以来的 64 位浮点小数天。
SCODE 对于 16 位系统,与VT_ERROR对应的内置错误类型。
Typedef 枚举â myenum 带符号整数,其大小与系统相关。
接口 IDispatch * 指向 IDispatch 接口 (VT_DISPATCH) 的指针。
接口 IUnknown * 指向不从 IDispatch (VT_UNKNOWN) 派生的接口的指针。 (任何 OLE 接口都可以由其 IUnknown interface 表示)
dispinterfaceâ Typename * 指向派生自 IDispatch (VT_DISPATCH) 的接口的指针。
Coclassâ Typename * 指向 coclass 名称 (VT_UNKNOWN) 的指针。
[oleautomation] 接口â Typename * 指向派生自 IUnknown 的接口的指针。
SAFEARRAY (TypeName) TypeName 是上述任何类型。 这些类型的数组。
TypeName * TypeName 是上述任何类型。 指向类型的指针。
十进制 按 10 的可变幂缩放的 96 位无符号二进制整数。 一种十进制数据类型,为数字 (提供大小和刻度,如坐标) 。

 

如果参数的类型是自动化兼容类型、指向与自动化兼容的类型的指针或与自动化兼容的类型的 SAFEARRAY,则参数与自动化兼容。

如果返回类型为 HRESULT、SCODE 或 void,则返回类型与自动化兼容。 但是,MIDL 要求接口方法返回 HRESULT 或 SCODE。 返回 void 会生成编译器错误。

如果成员的返回类型及其所有参数都与自动化兼容,则其与自动化兼容。

如果接口派生自 IDispatchIUnknown,则其具有 [oleautomation] 属性,并且其所有 VTBL 条目都与自动化兼容。 对于 32 位平台,接口中所有方法的调用约定必须为 STDCALL。 对于 16 位系统,所有方法都必须具有 CDECL 调用约定。

每个 dispinterface 都隐式兼容自动化。 因此,不应在 dispinterface 上使用 [oleautomation] 属性。

使用 MIDL 编译器 /osf 开关进行编译时,[oleautomation] 属性不可用。

Flags

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.
}

另请参阅

接口定义 (IDL) 文件

使用 MIDL 生成类型库

ODL 文件示例

ODL 文件语法

/osf

uuid