oleautomation 屬性表示該介面與自動化相容。
[
oleautomation,
uuid(string-uuid)
[ , interface-attribute-list]
]
interface interface-name : base-interface
{
...
}
參數
-
弦-uuid
-
指定由 Uuidgen 工具產生的 UUID 字串。
-
介面屬性列表
-
指定適用於整個介面的其他屬性。
-
介面名稱
-
指定介面的名稱。
-
基底介面
-
指定自動化介面的名稱,該衍生介面繼承成員函數、狀態碼及介面屬性。 所有自動化介面皆源自 IUnknown 或 IDispatch。
備註
[ oleautomation] 介面成員所指定的參數與回傳類型必須是自動化相容的,如下表所示。
| 類型 | 說明 |
|---|---|
| 布爾值 | 資料項目的值可以是VARIANT_TRUE或VARIANT_FALSE。 大小對應於VARIANT_BOOL。 |
| 不帶正負號的字元 | 8位元無符號資料項目。 |
| 雙倍 | 64 位元 IEEE 浮點數。 |
| 浮動 | 32位元的 IEEE 浮點數。 |
| int | 有符號整數,其大小依系統而異。 在 32 位元平台上,MIDL 將 整數 視為 32 位元有符號整數。 |
| 長 | 32位元有號整數。 |
| 簡短 | 16 位帶正負號的整數。 |
| 英國廣播電台 | 長度前綴字串,詳見自動化主題 BSTR。 |
| 貨幣 | 8 位元組,固定浮點數。 |
| 日期 | 自1899年12月30日起,64位元浮點分數天數。 |
| SCODE | 對於16位元系統——內建的錯誤類型對應於VT_ERROR。 |
| Typedef enummyenum | 有符號整數,其大小依系統而異。 |
| 介面 IDispatch * | 指向 IDispatch 介面的指標(VT_DISPATCH)。 |
| 介面 IUnknown * | 指標指向非源自 IDispatch (VT_UNKNOWN) 的介面。 (任何 OLE 介面都可以用其 IUnknown 介面來表示。) |
| dispinterface類型名稱 * | 指向由 IDispatch (VT_DISPATCH) 衍生的介面指標。 |
| 同級類型名稱 * | 指向共類名稱(VT_UNKNOWN)。 |
| [oleautomation] 介面Typename * | 指向源自 IUnknown 的介面指標。 |
| SAFEARRAY(類型名稱) | TypeName 是上述任一種類型。 這類的陣列。 |
| 類型名稱 * | TypeName 是上述任一種類型。 指向一個類型的指標。 |
| 十進位 | 96位元無符號二進位整數,縮放為10的可變冪次元。 一種十進位資料型態,提供數字的大小與刻度(如座標)。 |
若參數的型別是 Automation 相容型別、指向 Automation 相容型別的指標,或是相容型態的 SAFEARRAY,則該參數與 Automation 相容。
若一個回傳類型是 HRESULT、SCODE 或 void,則與 Automation 相容。 然而,MIDL 要求介面方法回傳 HRESULT 或 SCODE。 回傳 void 會產生編譯器錯誤。
若成員的回傳類型及所有參數皆相容於自動化,則該成員即與自動化相容。
若介面源自 IDispatch 或 IUnknown,且擁有 [oleautomation] 屬性,且所有 VTBL 條目皆相容 Automation,則該介面與 Automation 相容。 對於 32 位元平台,介面中所有方法的呼叫慣例必須是 STDCALL。 對於 16 位元系統,所有方法都必須具備 CDECL 呼叫慣例。
每個 介面 都隱含相容於自動化。 因此你不應該在 dispinterface 上使用 [oleautomation] 屬性。
使用 MIDL 編譯器 /osf 交換器時,[oleautomation] 屬性無法使用。
旗標
TYPEFLAG_FOLEAUTOMATION
Examples
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.
}
另請參閱