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
-
指定這個衍生介面繼承成員函式、狀態碼和介面屬性的自動化介面名稱。 所有自動化介面都是衍生自 IUnknown 或 IDispatch。
備註
為 [oleautomation] 介面成員指定的參數和傳回型別必須與 Automation 相容,如下表所列。
類型 | Description |
---|---|
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 | 針對對應至VT_ERROR的 16 位系統內建錯誤類型。 |
Typedef 列舉Â myenum | 帶正負號的整數,其大小與系統相依。 |
介面 IDispatch * | IDispatch介面 (VT_DISPATCH) 的指標。 |
介面 IUnknown * | 不衍生自 IDispatch (VT_UNKNOWN) 之介面的指標。 (任何 OLE 介面都可以由其 IUnknown 介面表示。) |
dispinterface Typename * | 衍生自 IDispatch (VT_DISPATCH) 之介面的指標。 |
Coclass Typename * | coclass 名稱的指標 (VT_UNKNOWN) 。 |
[oleautomation] 介面Â Typename * | 衍生自 IUnknown之介面的指標。 |
SAFEARRAY (TypeName) | TypeName 是上述任何類型。 這些類型的陣列。 |
TypeName * | TypeName 是上述任何類型。 型別的指標。 |
十進位 | 96 位無符號二進位整數,以 10 的變數乘冪來縮放。 十進位資料類型,提供數位的大小和小數位數 (,如座標) 所示。 |
如果參數的類型是自動化相容類型、自動化相容型別的指標,或自動化相容類型的 SAFEARRAY,則參數與 Automation 相容。
如果傳回類型是 HRESULT、SCODE 或 void,則傳回型別與 Automation 相容。 不過,MIDL 需要介面方法傳回 HRESULT 或 SCODE。 傳回 void 會產生編譯器錯誤。
如果成員的傳回型別和其所有參數都與自動化相容,則成員與 Automation 相容。
如果介面衍生自 IDispatch 或 IUnknown,則介面與自動化相容,它具有 [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.
}
另請參閱