IDL 属性

これまで、.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 属性と一緒に使用すると、coclass などの一部の IDL 属性は、プロジェクトにコードを挿入します。

idl_quote は、現在のバージョンの Visual C++ でサポートされていない属性または MIDL コンストラクトを使用できるようにします。 この属性と、importlibincludelib などの属性は、既存の .idl ファイルを現在の Visual Studio C++ プロジェクトで使用するために役立ちます。

属性 説明
aggregatable コントロールが別のコントロールで集計可能であることを示します。
appobject 完全な EXE アプリケーションに関連するアプリケーション オブジェクトとしてコクラスを識別し、コクラスの関数とプロパティがこのタイプ ライブラリでグローバルに使用可能であることを示します。
async_uuid COM インターフェイスの同期と非同期の両方のバージョンを定義するように MIDL コンパイラに指示する UUID を指定します。
bindable プロパティがデータ バインディングをサポートすることを示します。
call_as リモート処理不可能関数をリモート関数にマップできるようにします。
case 共用体で switch_type 属性とともに使用します。
coclass クラス定義を .idl ファイルにコクラスとして設定します。
control ユーザー定義型がコントロールであることを指定します。
cpp_quote 指定した文字列を引用符で囲まずに、生成されたヘッダー ファイルに出力します。
defaultbind オブジェクトを最もよく表す 1 つのバインド可能なプロパティを示します。
defaultcollelem Visual Basic コードを最適化するために使用されます。
defaultvalue 型指定された省略可能なパラメーターの既定値を指定できます。
default コクラス内で定義されるカスタムまたはディスパッチ インターフェイスが既定のプログラミング インターフェイスを表すことを示します。
defaultvtable コントロールの既定の vtable インターフェイスとしてインターフェイスを定義します。
dispinterface ディスパッチ インターフェイスとしてインターフェイスを .idl ファイルに配置します。
displaybind ユーザーにバインド可能として表示する必要があるプロパティを示します。
dual デュアル インターフェイスとしてインターフェイスを .idl ファイルに配置します。
entry DLL のエントリ ポイントを識別して、モジュール内のエクスポートされた関数または定数を指定します。
first_is 転送する最初の配列要素のインデックスを指定します。
helpcontext この要素に関するヘルプ ファイルの情報をユーザーに表示するコンテキスト ID を指定します。
helpfile タイプ ライブラリのヘルプ ファイルの名前を設定します。
helpstringcontext .hlp または .chm ファイル内のヘルプ トピックの ID を指定します。
helpstringdll ドキュメント文字列参照 (ローカリゼーション) を実行するために使用する DLL の名前を指定します。
helpstring 適用先となる要素を記述するために使用される文字列を指定します。
非表示 項目は存在しますが、ユーザー指向ブラウザーでは表示されないことを示します。
idl_module DLL のエントリ ポイントを指定します。
idl_quote 現在のバージョンの Visual C++ でサポートされていない属性または IDL コンストラクトを使用できるようにします。
id メンバー関数 (インターフェイスまたはディスパッチ インターフェイス内のプロパティまたはメソッド) の DISPID を指定します。
iid_is インターフェイス ポインターによって指し示される COM インターフェイスの IID を指定します。
immediatebind データ バインディング オブジェクトのプロパティに対するすべての変更が、すぐにデータベースに通知されることを示します。
importlib 既に他のタイプ ライブラリでコンパイル済みの型を、作成中のタイプ ライブラリで使用できるようにします。
import メインの .idl ファイルから参照する定義を含む、別の .idl、.odl、またはヘッダー ファイルを指定します。
include 生成された .idl ファイルに含める 1 つ以上のヘッダー ファイルを指定します。
includelib 生成された .idl ファイルに .idl または .h ファイルを含めます。
In 呼び出しプロシージャから呼び出されたプロシージャにパラメーターが渡されることを示します。
last_is 転送する最後の配列要素のインデックスを指定します。
lcid ロケール識別子を関数に渡します。
length_is 転送する配列要素の数を指定します。
licensed 適用先のコクラスがライセンスされており、IClassFactory2 を使用してインスタンス化する必要があることを示します。
local インターフェイス ヘッダーで使用する場合は、MIDL コンパイラをヘッダー ジェネレーターとして使用できます。 個々の関数で使用する場合は、スタブが生成されないローカル プロシージャを指定します。
max_is 有効な配列インデックスの最大値を指定します。
module .idl ファイルのライブラリ ブロックを定義します。
ms_union カプセル化されていない共用体のネットワーク データ表現の配置を制御します。
no_injected_text 属性の使用の結果としてコンパイラがコードを挿入しないようにします。
nonbrowsable インターフェイス メンバーをプロパティ ブラウザーに表示しない必要があることを示します。
noncreatable それ自体ではインスタンス化できないオブジェクトを定義します。
nonextensible IDispatch 実装に、インターフェイスの説明に記載されているプロパティとメソッドのみが含まれ、実行時にメンバーを追加して拡張できないことを指定します。
object カスタム インターフェイスを識別します。カスタム属性と同義です。
odl インターフェイスをオブジェクト記述言語 (ODL) インターフェイスとして識別します。
oleautomation インターフェイスが Automation と互換性を持つかどうかを示します。
省略可能 メンバー関数の省略可能なパラメーターを指定します。
out 呼び出されたプロシージャから呼び出したプロシージャ (サーバーからクライアント) に返されるポインター パラメーターを示します。
pointer_default パラメーター リストに表示される上位レベルのポインターを除く、すべてのポインターの既定のポインター属性を指定します。
pragma 指定した文字列を引用符で囲まずに、生成された .idl ファイルに出力します。
progid COM オブジェクトの ProgID を指定します。
propget プロパティ アクセサー (get) 関数を指定します。
propputref 値ではなく参照を使用するプロパティ設定関数を指定します。
propput プロパティ設定関数を指定します。
ptr ポインターを完全ポインターとして指定します。
public typedef が .idl ファイル内から参照されない場合でも、タイプ ライブラリに含まれるようにします。
範囲 実行時に値が設定される引数またはフィールドに使用できる値の範囲を指定します。
readonly 変数への代入を禁止します。
ref 参照ポインターを識別します。
requestedit OnRequestEdit 通知がプロパティでサポートされることを示します。
restricted ライブラリ、またはモジュール、インターフェイス、ディスパッチ インターフェイスのメンバーを任意に呼び出すことができないことを指定します。
retval メンバーの戻り値を受け取るパラメーターを指定します。
size_is サイズ設定されたポインター、サイズ設定されたポインター間、および単一または多次元配列に割り当てられるメモリのサイズを指定します。
ソース クラス、プロパティ、またはメソッドのメンバーがイベントのソースであることを示します。
string 1 次元の charwchar_tbyte または同等の配列、またはこのような配列へのポインターを文字列として扱う必要があることを示します。
switch_is 共用体メンバーを選択する共用体判別として機能する式または識別子を指定します。
switch_type 共用体判別として使用される変数の型を識別します。
transmit_as クライアント アプリケーションとサーバー アプリケーションが操作する提示された型を、送信された型と関連付けるように、コンパイラに指示します。
uidefault ユーザー インターフェイスに表示される既定のメンバーとして、型情報メンバーを指定します。
unique 一意のポインターを指定します。
usesgetlasterror 関数を呼び出す際にエラーが発生したかどうかを呼び出し元に伝え、その後呼び出し元が GetLastError を呼び出してエラー コードを取得します。
uuid クラスまたはインターフェイスの一意の ID を指定します。
v1_enum 指定された列挙型を 16 ビットの既定値ではなく、32 ビットのエンティティとして送信するように指示します。
vararg 関数が異なる数の引数をとることを指定します。
vi_progid バージョンに依存しない形式の ProgID を指定します。
wire_marshal アプリケーション固有のデータ型ではなく、転送に使用されるデータ型を指定します。

関連項目

グループ別の属性