moduł (C++)

Definiuje blok biblioteki w pliku idl.

Składnia

[ 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,) ];

Parametry

type
(Opcjonalnie) Może być jednym z następujących elementów:

  • dll Dodaje funkcje i klasy, które umożliwiają wynikowej biblioteki DLL działanie jako serwer COM w procesie. Jest to wartość domyślna.

  • exe Dodaje funkcje i klasy, które umożliwiają wynikowy plik wykonywalny działać jako serwer COM poza procesem.

  • service Dodaje funkcje i klasy, które umożliwiają wynikowy plik wykonywalny działać jako usługa NT.

  • unspecified Wyłącza iniekcję kodu ATL związanego z atrybutem modułu: iniekcja klasy modułu ATL, globalne wystąpienie _AtlModule i funkcje punktu wejścia. Nie wyłącza iniekcji kodu ATL ze względu na inne atrybuty w projekcie.

name
(Opcjonalnie) Nazwa bloku biblioteki.

version
(Opcjonalnie) Numer wersji, który chcesz przypisać do bloku biblioteki. Wartość domyślna to 1.0.

uuid
Unikatowy identyfikator biblioteki. Jeśli ten parametr zostanie pominięty, identyfikator zostanie wygenerowany automatycznie dla biblioteki. Może być konieczne pobranie identyfikatora uuid bloku biblioteki, który można zrobić przy użyciu identyfikatora __uuidof(nazwa_biblioteki).

lcid
Parametr lokalizacji. Aby uzyskać więcej informacji, zobacz lcid .

control
(Opcjonalnie) Określa, że wszystkie coklasy w bibliotece są kontrolkami.

helpstring
Określa bibliotekę typów.

helpstringdll
(Opcjonalnie) Ustawia nazwę pliku dll, który ma być używany do wykonywania wyszukiwania ciągów dokumentu. Aby uzyskać więcej informacji, zobacz helpstringdll .

helpfile
(Opcjonalnie) Nazwa pliku Pomocy dla biblioteki typów.

helpcontext
(Opcjonalnie) Identyfikator Pomocy dla tej biblioteki typów.

helpstringcontext
(Opcjonalnie) Aby uzyskać więcej informacji, zobacz helpstringcontext .

hidden
(Opcjonalnie) Uniemożliwia wyświetlanie całej biblioteki. To użycie jest przeznaczone do użycia z kontrolkami. Hosty muszą utworzyć nową bibliotekę typów, która opakowuje kontrolkę za pomocą właściwości rozszerzonych. Aby uzyskać więcej informacji, zobacz ukryty atrybut MIDL.

restricted
(Opcjonalnie) Elementy członkowskie biblioteki nie mogą być wywoływane arbitralnie. Aby uzyskać więcej informacji, zobacz ograniczony atrybut MIDL.

custom
(Opcjonalnie) Co najmniej jeden atrybut; jest to podobne do atrybutu niestandardowego. Pierwszy parametr do niestandardowego to identyfikator GUID atrybutu. Na przykład:

[module(custom={guid,1}, custom={guid1,2})]

resource_name
Identyfikator zasobu ciągu pliku rgs używany do rejestrowania identyfikatora APLIKACJI biblioteki DLL, pliku wykonywalnego lub usługi. Gdy moduł jest usługą typu, ten argument jest również używany do uzyskania identyfikatora ciągu zawierającego nazwę usługi.

Uwaga

Zarówno plik rgs, jak i ciąg zawierający nazwę usługi powinny zawierać tę samą wartość liczbową.

Uwagi

Jeśli nie określisz parametru ograniczonego do emitidl, moduł jest wymagany w dowolnym programie korzystającym z atrybutów języka C++.

Blok biblioteki zostanie utworzony, jeśli oprócz atrybutu modułu kod źródłowy używa również dispinterface, dual, object lub atrybutu, który oznacza coclass.

Jeden blok biblioteki jest dozwolony w pliku idl. Wiele wpisów modułu w kodzie źródłowym zostanie scalonych z najnowszymi zaimplementowanymi wartościami parametrów.

Jeśli ten atrybut jest używany w projekcie korzystającym z atl, zachowanie atrybutu ulega zmianie. Oprócz powyższego zachowania atrybut wstawia również obiekt globalny (o nazwie _AtlModule) poprawnego typu i dodatkowy kod pomocy technicznej. Jeśli atrybut jest autonomiczny, wstawia klasę pochodzącą z poprawnego typu modułu. Jeśli atrybut jest stosowany do klasy, dodaje klasę bazową poprawnego typu modułu. Prawidłowy typ jest określany przez wartość parametru typu :

Przykład

Poniższy kod pokazuje, jak utworzyć blok biblioteki w wygenerowanym pliku idl.

// cpp_attr_ref_module1.cpp
// compile with: /LD
[module(name="MyLibrary", version="1.2", helpfile="MyHelpFile")];

Poniższy kod pokazuje, że możesz udostępnić własną implementację funkcji, która będzie wyświetlana w kodzie, który został wstrzyknięty w wyniku użycia modułu. Zobacz /Fx , aby uzyskać więcej informacji na temat wyświetlania wprowadzonego kodu. Aby zastąpić jedną z funkcji wstawionych przez atrybut modułu, utwórz klasę zawierającą implementację funkcji i przypisz atrybut modułu do tej klasy.

// 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);
   }
};

Wymagania

Kontekst atrybutu Wartość
Dotyczy Dowolnym miejscu
Powtarzalne Nie.
Wymagane atrybuty Brak
Nieprawidłowe atrybuty Brak

Aby uzyskać więcej informacji, zobacz Konteksty atrybutów.

Zobacz też

Atrybuty IDL
Atrybuty klasy
Oddzielne atrybuty
Atrybuty Typedef, Enum, Union oraz Struct
usesgetlasterror
Biblioteki
helpcontext
helpstring
helpfile
version