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,
) ];
パラメータ
type (省略可能)
次のいずれかの値を指定します。dll 結果の DLL がインプロセス COM サーバーとして機能できるように、関数やクラスを追加します。これは既定値です。
exe 結果の実行可能プログラムがアウトプロセス COM サーバーとして機能できるように、関数やクラスを追加します。
service 結果の実行可能プログラムが NT サービスとして機能できるように、関数やクラスを追加します。
unspecified ATL モジュール クラス、グローバル インスタンス _AtlModule、およびエントリ ポイント関数など、モジュール属性関連の ATL コードの挿入を無効にします。プロジェクト内の他の属性に関連する ATL コードの挿入は無効にしません。
name (省略可能)
ライブラリ ブロックの名前。version (省略可能)
ライブラリ ブロックに割り当てるバージョン番号。既定値は 1.0 です。uuid
ライブラリの一意の ID。このパラメータを省略すると、ライブラリの ID が自動的に生成されます。ライブラリ ブロックの uuid を取得する必要がある場合は、識別子 __uuidof(libraryname) を使用します。lcid
ローカライズ パラメータ。詳細については、「lcid」を参照してください。control (省略可能)
ライブラリ内のすべてのコクラスがコントロールであることを指定します。helpstring
タイプ ライブラリを指定します。helpstringdll (省略可能)
ドキュメントの文字列の検索に使用する .dll ファイルの名前を設定します。詳細については、「helpstringdll」を参照してください。helpfile (省略可能)
タイプ ライブラリのヘルプ ファイルの名前。helpcontext (省略可能)
このタイプ ライブラリのヘルプ ID。helpstringcontext (省略可能)
詳細については、「helpstringcontext」を参照してください。hidden (省略可能)
ライブラリ全体を非表示にします。コントロールと一緒に使用することを前提としています。ホストでは、エクステンダ プロパティを持つコントロールをラップするために、新しいタイプ ライブラリを作成する必要があります。詳細については、MIDL 属性 hidden を参照してください。restricted (省略可能)
ライブラリのメンバを任意に呼び出すことができないように指定します。詳細については、MIDL 属性 restricted を参照してください。custom (省略可能)
1 つ以上の属性。属性 custom と同じです。custom の最初のパラメータは属性の GUID です。次に例を示します。[module(custom={guid,1}, custom={guid1,2})]
resource_name
DLL、実行可能ファイル、またはサービスの APP ID の登録に使用する .rgs ファイルの文字列リソース ID。モジュールの型がサービスである場合は、サービス名を含む文字列の ID を取得する場合にも使用します。
メモ : |
---|
.rgs ファイルとサービス名を含む文字列には、同じ数値が含まれます。 |
解説
emitidl に restricted パラメータを指定する場合を除き、C++ 属性を使用するすべてのプログラムには module が必要です。
属性 module のほかに、dispinterface、dual、object、または coclass を表す属性をソース コードで使用する場合は、ライブラリ ブロックが作成されます。
.idl ファイル内で使用できるライブラリ ブロックは 1 つです。ソース コード内の複数のモジュール エントリがマージされ、最新のパラメータ値が実装されます。
この属性が ATL を使用するプロジェクト内で使用される場合、属性の動作は異なります。上の動作のほかに、適切な型のグローバル オブジェクト (_AtlModule) と追加のサポート コードが挿入されます。スタンドアロン属性の場合は、適切なモジュール型から派生したクラスが挿入されます。属性がクラスに適用されている場合は、適切なモジュール型の基本クラスが追加されます。適切な型は、type パラメータの値で決まります。
type = dll
CAtlDllModuleT を基本クラスおよび COM サーバーで必要な標準 DLL エントリ ポイントとして使用します。必要なエントリ ポイントは、DllMain、DllRegisterServer、DllUnRegisterServer、DllCanUnloadNow、および DllGetClassObject です。
type = exe
CAtlExeModuleT を基本クラスおよび標準実行可能エントリ ポイント WinMain として使用します。
type = service
CAtlServiceModuleT を基本クラスおよび標準実行可能エントリ ポイント WinMain として使用します。
type = unspecified
モジュール属性に関連する ATL コードの挿入を無効にします。
使用例
生成される .idl ファイルにライブラリ ブロックを作成する方法を次のコード例に示します。
// cpp_attr_ref_module1.cpp
// compile with: /LD
[module(name="MyLibrary", version="1.2", helpfile="MyHelpFile")];
以下のコードでは、module を使用することにより挿入されたコードに独自の関数の実装を設定できることを示しています。挿入されたコードの表示の詳細については、「/Fx (挿入されたコードのマージ)」を参照してください。module 属性によって挿入された関数の 1 つをオーバーライドするには、関数の実装を含むクラスを作成し、module 属性をそのクラスに適用します。
// 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);
}
};
必要条件
属性コンテキスト
対象 |
任意 |
複数回の適用 |
不可 |
必要な属性 |
なし |
無効な属性 |
なし |
詳細については、「属性コンテキスト」を参照してください。