módulo (C++)
Define la biblioteca bloqueado en el archivo .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,
) ];
Parámetros
tipo (opcional)
Puede ser una de las siguientes:DLL agrega funciones y clases que permiten que la DLL resultante funcione como un servidor COM en proceso.Este es el valor predeterminado.
EXE agrega funciones y clases que permiten que el ejecutable resultante funcione como a fuera del servidor COM de proceso.
servicio agrega funciones y clases que permiten que el ejecutable resultante funcione como un servicio NT.
sin especificar deshabilita la inyección de código ATL relacionada con el atributo module: inserción de la clase de módulo ATL, de _AtlModule global de la instancia y el punto de entrada funciona.No deshabilita la inyección de código ATL por otros atributos en el proyecto.
nombre (opcional)
El nombre del bloque de la biblioteca.versión (opcional)
El número de versión que desea asignar al bloque de la biblioteca.El valor predeterminado es 1.0.uuid
el identificador único para la biblioteca.Si se omite este parámetro, un identificador se generará automáticamente para la biblioteca.Puede ser necesario recuperar el uuid del bloque de la biblioteca, que se puede utilizarel libraryname**)**de **__uuidof (**ID.LCID
El parámetro de localización.Vea LCID para obtener más información.control (opcional)
Especifica que todas las coclases en la biblioteca son controles.helpstring
especifica la biblioteca de tipos.helpstringdll (opcional)
Establece el nombre del archivo .dll para utilizar para realizar una búsqueda de la cadena del documento.Vea helpstringdll para obtener más información.helpfile (opcional)
El nombre del archivo de Ayuda para la biblioteca de tipos.helpcontext (opcional)
El identificador de Ayuda para esta biblioteca de tipos.helpstringcontext (opcional)
Vea helpstringcontext para obtener más información.Oculto (opcional)
Evita que la biblioteca completa se mostrará.Este uso está pensado para su uso con los controles.Hospeda necesita crear una nueva biblioteca de tipos que incluya el control con propiedades extendidas.Vea el atributo de Oculto MIDL para obtener más información.Restringido (opcional)
Los miembros de la biblioteca no pueden ser llamados arbitrariamente.Vea el atributo de Restringido MIDL para obtener más información.personalizada (opcional)
uno o más atributos; esto es similar al atributo de personalizada .El primer parámetro a custom es el GUID del atributo.Por ejemplo:[module(custom={guid,1}, custom={guid1,2})]
resource_name
El Id. de recurso de cadena del archivo .rgs utilizado para registrar el identificador de la aplicación de DLL, la aplicación ejecutable, o de servicio.Cuando el módulo se de servicio escrito, este argumento también se utiliza para obtener el identificador de cadena que contiene el nombre del servicio.
[!NOTA]
El archivo .rgs y la cadena que contiene el nombre del servicio deben contener el mismo valor numérico.
Comentarios
A menos que se especifique el parámetro de Restringido a emitidl, módulo se requiere en cualquier programa que utilice atributos de C++.
Un bloque de biblioteca se creará si, además del atributo de módulo , el código fuente también utiliza dispinterface, dual, objeto, o un atributo que implica CoClass.
Un bloque de biblioteca se permite en un archivo .idl.Varias entradas de módulo en código fuente se combinarán, con los valores de parámetro más recientes que se implementan.
Si este atributo se utiliza dentro de un proyecto que utilice ATL, el comportamiento del atributo cambia.Además del comportamiento anterior, el atributo también incrusta un objeto global (denominado _AtlModule) del código del tipo correcto y soporte adicional.Si el atributo es independiente, inserta una clase derivada del tipo correcto del módulo.Si el atributo se aplica a una clase, agregue una clase base del tipo correcto del módulo.El valor del parámetro de type determina el tipo correcto:
type = DLL
CAtlDllModuleT se utiliza como clase base y los puntos de entrada estándar de DLL necesarios para un servidor COM.estos puntos de entrada son DllMain, DllRegisterServer, DllUnRegisterServer, DllCanUnloadNow, y DllGetClassObject.
type = EXE
CAtlExeModuleT se utiliza como clase base y el punto de entrada ejecutable estándar WinMain.
type = mantenga
CAtlServiceModuleT se utiliza como clase base y el punto de entrada ejecutable estándar WinMain.
type = sin especificar
Deshabilita la inyección de código ATL relacionada con el atributo module.
Ejemplo
El código siguiente muestra cómo crear un bloque de biblioteca en el archivo generado .idl.
// cpp_attr_ref_module1.cpp
// compile with: /LD
[module(name="MyLibrary", version="1.2", helpfile="MyHelpFile")];
El código siguiente se muestra que puede proporcionar dispone de la implementación de una función que aparecería en el código que se insertará como resultado de utilizar módulo.Vea /Fx para obtener más información sobre código insertado de la vista.Para reemplazar una de las funciones inline en el atributo de módulo , cree una clase que contiene la implementación de la función y haga que el atributo de módulo aplica a esa clase.
// 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);
}
};
Requisitos
Contexto de atributo
Se aplica a |
Cualquier parte |
repetible |
No |
Atributos necesarios |
None |
Atributos no válidos |
None |
Para obtener más información, vea Contextos de atributo.