module (C++)
.idl ファイルのライブラリ ブロックを定義します。
[ module (
type=dll,
name=string,
version=1.0,
uuid=uuid,
lcid=integer,
control=boolean,
helpstring=string,
helpstringdll=string,
helpfile=string,
helpcontext=integer,
helpstringcontext=integer,
hidden=boolean,
restricted=boolean,
custom=string,
resource_name=string,
) ];
パラメーター
種類 (省略可能)
次のいずれかになります。dll はDLL の INPROC な COM サーバーとして機能するようにするクラスと関数を追加します。これが既定値です。
exe は実行可能ファイルがプロセスから COM サーバーとして機能するようにするクラスと関数を追加します。
サービス は実行可能ファイルが NT サービスとして機能するようにするクラスと関数を追加します。
Unspecified 属性はモジュールに関連する ATL コードの挿入を無効にします : ATL モジュール クラスグローバル インスタンスの _AtlModule とエントリ ポイントの挿入します。プロジェクト内の他の属性を使用して ATL コードの挿入は無効になりません。
名前 (省略可能)
ライブラリ ブロックの名前。バージョン (省略可能)
オプションはライブラリのブロックに割り当てるバージョン番号。既定値は 1.0 です。uuid
ライブラリの一意の ID。このパラメーターを省略するとID がライブラリに対して自動的に生成されます。には識別子の (__uuidof の libraryname**)** を使用して実行できるライブラリ ブロックに uuid を 取得する必要があります。lcid
ローカリゼーションのパラメーター。詳細についてはlcid を参照してください。コントロール (省略可能)
ライブラリのすべてのコクラスはコントロールであることを指定します。helpstring
タイプ ライブラリを指定します。helpstringdll (省略可能)
文書内の文字列の参照を使用して実行する .dll ファイルの名前を設定します。詳細についてはhelpstringdll を参照してください。helpfile (省略可能)
タイプ ライブラリのヘルプ ファイルの名前。helpcontext(X) (省略可能)
このタイプ ライブラリのヘルプ ID。helpstringcontext (省略可能)
詳細についてはhelpstringcontext を参照してください。hidden(E) (省略可能)
すべてのライブラリが表示されないようにします。このはコントロールで使用するためのものです。ホストは拡張プロパティを持つコントロールをラップする新しいタイプ ライブラリを作成する必要があります。詳細についてはhidden(E) の MIDL の属性を参照してください。restricted (省略可能)
ライブラリのメンバーは任意に呼び出すことはできません。詳細についてはrestricted の MIDL の属性を参照してください。カスタム (省略可能)
一つ以上の属性 ; これは カスタム の属性に似ています。custom への最初のパラメーターは属性の GUID です。次に例を示します。[module(custom={guid,1}, custom={guid1,2})]
resource_name
DLL は実行可能ファイルまたはサービス アプリケーションの ID の登録に使用する .rgs ファイルの文字列のリソース id。モジュールがその型のサービスでは文字列 ID を取得するためにこの引数はサービス名が使用されます。
[!メモ]
.rgs ファイルの両方を文字列はサービス名同じ数値を含める必要があります。
解説
out に restricted のパラメーターを指定しない場合 モジュール は C++ 属性を使用するすべてのプログラムに必要です。
ライブラリ ブロックは モジュール の属性に加えてソース・コードがディスパッチインターフェイスdoubleオブジェクトまたは コクラス を意味する属性を使用して作成されます。
.idl ファイルに 1 個のライブラリ ブロックが割り当てられます。ソース・コードの複数のモジュールのエントリが実行された最新の値とマージされます。
この属性はATL を使用してプロジェクト内で使用する場合は属性の動作が変わります。上記の動作に加えて属性を使用すると正しい型と追加サポート コードのグローバル オブジェクト (_AtlModule とも呼ばれます) を挿入します。属性はモジュールの場合正しい型から派生したクラスを挿入します。属性をクラスに適用する場合正しいモジュールの型の基本クラスを追加します。正しい型は type パラメーターの値によって決まります :
type = dll
CAtlDllModuleT を COM サーバーに必要な基本クラスと標準 DLL のエントリ ポイントとして使用されます。これらのエントリ ポイントは DllMainDllRegisterServerDllUnRegisterServerDllCanUnloadNow と DllGetClassObject です。
type = exe
CAtlExeModuleT は基本クラスと標準実行可能 WinMain エントリ ポイントとして使用されます。
type = サービス
CAtlServiceModuleT は基本クラスと標準実行可能 WinMain エントリ ポイントとして使用されます。
type = Unspecified
モジュール属性に関連する ATL コードの挿入を無効にします。
使用例
次のコードは生成された .idl ファイルのライブラリ ブロックを作成する方法を示します。
// cpp_attr_ref_module1.cpp
// compile with: /LD
[module(name="MyLibrary", version="1.2", helpfile="MyHelpFile")];
次のコードは モジュール を使用した結果として挿入されたコードに表示される関数の独自の実装を提供できることを示します。挿入されたコードの表示の詳細については /Fx を参照してください。 モジュール の属性によって挿入される関数の 1 種類をオーバーライドするには関数を実装するには モジュール の属性をそのクラスをクラスに適用されます。
// cpp_attr_ref_module2.cpp
// compile with: /LD /link /OPT:NOREF
#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <atltypes.h>
#include <atlctl.h>
#include <atlhost.h>
#include <atlplus.h>
// no semicolon after attribute block
[module(dll, name="MyLibrary", version="1.2", helpfile="MyHelpFile")]
// module attribute now applies to this class
class CMyClass {
public:
BOOL WINAPI DllMain(DWORD dwReason, LPVOID lpReserved) {
// add your own code here
return __super::DllMain(dwReason, lpReserved);
}
};
必要条件
属性コンテキスト
対象 |
任意 |
複数回の適用 |
X |
必要な属性 |
なし |
無効な属性 |
なし |
詳細については属性コンテキスト を参照してください。