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 コンストラクトを使用できるようにします。 この属性と、importlib や includelib などの属性は、既存の .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 次元の char 、wchar_t 、byte または同等の配列、またはこのような配列へのポインターを文字列として扱う必要があることを示します。 |
switch_is | 共用体メンバーを選択する共用体判別として機能する式または識別子を指定します。 |
switch_type | 共用体判別として使用される変数の型を識別します。 |
transmit_as | クライアント アプリケーションとサーバー アプリケーションが操作する提示された型を、送信された型と関連付けるように、コンパイラに指示します。 |
uidefault | ユーザー インターフェイスに表示される既定のメンバーとして、型情報メンバーを指定します。 |
unique | 一意のポインターを指定します。 |
usesgetlasterror | 関数を呼び出す際にエラーが発生したかどうかを呼び出し元に伝え、その後呼び出し元が GetLastError を呼び出してエラー コードを取得します。 |
uuid | クラスまたはインターフェイスの一意の ID を指定します。 |
v1_enum | 指定された列挙型を 16 ビットの既定値ではなく、32 ビットのエンティティとして送信するように指示します。 |
vararg | 関数が異なる数の引数をとることを指定します。 |
vi_progid | バージョンに依存しない形式の ProgID を指定します。 |
wire_marshal | アプリケーション固有のデータ型ではなく、転送に使用されるデータ型を指定します。 |