IDL 屬性
傳統上,維護 .idl 檔案表示您必須:
請熟悉 .idl 檔案的結構和語法,以修改它。
依賴精靈,這可讓您修改 .idl 檔案的某些層面。
現在,您可以使用 Visual C++ IDL 屬性,從原始程式碼檔案內修改 .idl 檔案。 在許多情況下,Visual C++ IDL 屬性的名稱與 MIDL 屬性相同。 當 Visual C++ IDL 屬性和 MIDL 屬性的名稱相同時,這表示將 Visual C++ 屬性放在原始程式碼檔中,將會產生包含其名稱為 MIDL 屬性的 .idl 檔案。 不過,Visual C++ IDL 屬性可能無法提供 MIDL 屬性的所有功能。
當未搭配 COM 屬性使用時,IDL 屬性可讓您定義介面。 編譯原始程式碼時,會使用 屬性來定義產生的 .idl 檔案。 與 ATL 專案中的 COM 屬性搭配使用時,某些 IDL 屬性,例如 coclass
,會導致程式代碼插入專案中。
請注意, idl_quote 可讓您使用目前Visual C++ 版本中不支援的 MIDL 建構。 此屬性和其他屬性,例如 importlib 和 includelib,可協助您在目前的 Visual Studio C++ 專案中使用現有的 .idl 檔案。
屬性 | 描述 |
---|---|
aggregatable | 表示控件可由另一個控件匯總。 |
appobject | 將 coclass 識別為與完整 EXE 應用程式相關聯的應用程式物件,並指出 coclass 的函式和屬性可在此類型連結庫中全域使用。 |
async_uuid | 指定 UUID,指示 MIDL 編譯程式同時定義 COM 介面的同步和異步版本。 |
bindable | 表示支援資料繫結的屬性。 |
call_as | 可讓非遠端函式對應至遠端函式。 |
case | 與等位中的 switch_type 屬性搭配使用。 |
coclass | 將類別定義放入 .idl 檔案中做為coclass。 |
control | 指定使用者定義型別為控制件。 |
cpp_quote | 在產生的頭檔中發出指定的字串,不含引號字元。 |
defaultbind | 表示最能代表物件的單一可系結屬性。 |
defaultcollelem | 用於 Visual Basic 程式代碼優化。 |
defaultvalue | 允許指定具型別選擇性參數的預設值。 |
預設值 | 表示 coclass 內定義的自訂或 dispinterface,用以代表預設可程式性介面。 |
defaultvtable | 將介面定義為控件的預設 vtable 介面。 |
dispinterface | 將介面放入 .idl 檔案中作為分派介面。 |
displaybind | 指出應該向用戶顯示為可系結的屬性。 |
dual | 將介面放在 .idl 檔案中做為雙重介面。 |
entry | 藉由識別 DLL 中的進入點,指定模組中導出的函式或常數。 |
first_is | 指定要傳輸之第一個陣列專案的索引。 |
helpcontext | 指定內容識別碼,讓使用者在說明檔中檢視這個專案的相關信息。 |
helpfile | 設定類型庫的說明檔名稱。 |
helpstringcontext | 指定 .hlp 或 .chm 檔案中說明主題的標識符。 |
helpstringdll | 指定要用來執行檔字串查閱的 DLL 名稱(當地語系化)。 |
helpstring | 指定用來描述所套用之項目的字元字串。 |
hidden | 指出專案存在,但不應該顯示在用戶導向的瀏覽器中。 |
idl_module | 指定 DLL 中的進入點。 |
idl_quote | 可讓您使用目前版本的 Visual C++不支援的屬性或 IDL 建構。 |
id | 指定成員函式的 DISPID(在介面或 dispinterface 中為屬性或方法)。 |
iid_is | 指定介面指標所指向之 COM 介面的 IID。 |
immediatebind | 表示資料庫會立即收到數據系結物件屬性之所有變更的通知。 |
importlib | 讓已編譯成其他類型程式庫的類型可供正在建立的類型程式庫使用。 |
import | 指定另一個 .idl、.odl 或頭檔,其中包含您想要從主要 .idl 檔案參考的定義。 |
include | 指定要包含在產生的 .idl 檔案中的一或多個頭檔。 |
includelib | 將 .idl 或 .h 檔案包含在產生的 .idl 檔案中。 |
在 | 表示參數要從呼叫程式傳遞至呼叫的程式。 |
last_is | 指定要傳輸之最後一個陣列專案的索引。 |
lcid | 可讓您將地區設定識別碼傳遞至函式。 |
length_is | 指定要傳輸的陣列項目數目。 |
licensed | 表示其套用的coclass已獲授權,且必須使用具現化 IClassFactory2 。 |
local | 可讓您在介面標頭中使用 MIDL 編譯程式作為標頭產生器。 在個別函式中使用時,指定不會產生存根的本機程式。 |
max_is | 指定有效陣列索引的最大值。 |
module | 在 .idl 檔案中定義程式庫區塊。 |
ms_union | 控制非擷取聯集的網路數據表示對齊方式。 |
no_injected_text | 防止編譯程式因為使用屬性而插入程序代碼。 |
nonbrowsable | 表示介面成員不應該顯示在屬性瀏覽器中。 |
noncreatable | 定義無法自行具現化的物件。 |
nonextensible | 指定實作 IDispatch 只包含介面描述中所列的屬性和方法,而且無法在運行時間與其他成員一起擴充。 |
object | 識別自定義介面;與自定義屬性同義。 |
odl | 將介面識別為物件描述語言 (ODL) 介面。 |
oleautomation | 表示介面與自動化相容。 |
optional | 指定成員函式的選擇性參數。 |
out | 識別從被呼叫程序傳回至呼叫程序的指標參數 (從伺服器至用戶端)。 |
pointer_default | 指定所有指標的預設指標屬性,但出現在參數清單中的最上層指標除外。 |
pragma | 在產生的 .idl 檔案中發出指定的字串,不含引號字元。 |
progid | 指定 COM 物件的 ProgID。 |
propget | 指定屬性存取子 (get) 函式。 |
propputref | 指定使用參考而非值的屬性設定函式。 |
propput | 指定屬性設定函式。 |
ptr | 將指標指定為完整指標。 |
public | 確保 typedef 會進入類型連結庫,即使它未從 .idl 檔案中參考。 |
range | 指定在運行時間設定其值之自變數或欄位的允許值範圍。 |
readonly | 禁止指派給變數。 |
ref | 識別參考指標。 |
requestedit | 表示屬性支援 OnRequestEdit 通知。 |
restricted | 指定無法任意呼叫模組、介面或 dispinterface 的連結庫或成員。 |
retval | 指定接收成員傳回值的參數。 |
size_is | 指定配置給大小指標的記憶體大小、大小指標到大小指標,以及單一或多維度陣列。 |
source | 表示類別、屬性或方法的成員是事件的來源。 |
string | 表示一維 char 、 wchar_t 、 byte 或對等陣列或這類陣列的指標必須視為字串。 |
switch_is | 指定表達式或標識碼,做為選取等位成員的等位辨別器。 |
switch_type | 識別做為等位辨識項的變數類型。 |
transmit_as | 指示編譯程式將呈現的類型與傳輸類型產生關聯,讓用戶端和伺服器應用程式操作的類型產生關聯。 |
uidefault | 表示類型資訊成員是使用者介面中顯示的預設成員。 |
unique | 指定唯一指標。 |
usesgetlasterror | 告訴呼叫端,如果呼叫該函式時發生錯誤,則呼叫端可以呼叫 GetLastError 以擷取錯誤碼。 |
uuid | 指定類別或介面的唯一標識碼。 |
v1_enum | 指示指定的列舉型別會以 32 位實體的形式傳輸,而不是 16 位預設值。 |
vararg | 指定函式接受變數數目的自變數。 |
vi_progid | 指定與版本無關的 ProgID 形式。 |
wire_marshal | 指定將用於傳輸的數據類型,而不是應用程式特定的數據類型。 |