Udostępnij za pośrednictwem


Fabryki klas i licencjonowanie

Aby utworzyć wystąpienie kontrolki OLE, aplikacja kontenera wywołuje funkcję składową fabryki klas kontrolki. Ponieważ kontrolka jest rzeczywistym obiektem OLE, fabryka klas jest odpowiedzialna za tworzenie wystąpień kontrolki. Każda klasa sterowania OLE musi mieć fabrykę klas.

Kolejną ważną funkcją kontrolek OLE jest możliwość wymuszania licencji. ControlWizard umożliwia włączenie licencjonowania podczas tworzenia projektu kontroli. Aby uzyskać więcej informacji na temat licencjonowania kontrolek, zobacz artykuł Kontrolki ActiveX: licencjonowanie kontrolki ActiveX.

W poniższej tabeli wymieniono kilka makr i funkcji używanych do deklarowania i implementowania fabryki klas kontrolki oraz licencji kontrolki.

Fabryki klas i licencjonowanie

Makro lub funkcja opis
DECLARE_OLECREATE_EX Deklaruje fabrykę klas dla strony kontrolki LUB właściwości OLE.
IMPLEMENT_OLECREATE_EX Implementuje funkcję kontrolki GetClassID i deklaruje wystąpienie fabryki klas.
BEGIN_OLEFACTORY Rozpoczyna deklarację dowolnych funkcji licencjonowania.
END_OLEFACTORY Kończy deklarację wszystkich funkcji licencjonowania.
AfxVerifyLicFile Sprawdza, czy kontrolka jest licencjonowana do użycia na określonym komputerze.

DECLARE_OLECREATE_EX

Deklaruje fabrykę klas i GetClassID funkcję składową klasy kontrolki.

DECLARE_OLECREATE_EX(class_name)

Parametry

class_name
Nazwa klasy sterującej.

Uwagi

Użyj tego makra w pliku nagłówka klasy kontrolnej dla kontrolki, która nie obsługuje licencjonowania.

Należy pamiętać, że to makro służy do tego samego celu co w poniższym przykładzie kodu:

BEGIN_OLEFACTORY(CMyAxCtrl)
END_OLEFACTORY(CMyAxCtrl)

Wymagania

Nagłówek afxctl.h

IMPLEMENT_OLECREATE_EX

Implementuje fabrykę klas kontrolki i GetClassID funkcję składową klasy kontrolnej.

IMPLEMENT_OLECREATE_EX(
   class_name,
    external_name,
    l,
    w1,
    w2,
    b1,
    b2,
    b3,
    b4,
    b5,
    b6,
    b7,
    b8)

Parametry

class_name
Nazwa klasy strony właściwości kontrolki.

external_name
Nazwa obiektu uwidoczniona dla aplikacji.

l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8
Składniki klasy CLSID. Aby uzyskać więcej informacji na temat tych parametrów, zobacz uwagi dotyczące IMPLEMENT_OLECREATEprogramu .

Uwagi

To makro musi pojawić się w pliku implementacji dla dowolnej klasy sterującej DECLARE_OLECREATE_EX , która używa makra lub BEGIN_OLEFACTORY makr i END_OLEFACTORY . Nazwa zewnętrzna to identyfikator kontrolki OLE, która jest widoczna dla innych aplikacji. Kontenery używają tej nazwy, aby zażądać obiektu tej klasy sterującej.

Wymagania

Nagłówek afxctl.h

BEGIN_OLEFACTORY

Rozpoczyna deklarację fabryki klas w pliku nagłówkowym klasy kontrolnej.

BEGIN_OLEFACTORY(class_name)

Parametry

class_name
Określa nazwę klasy kontrolnej, której jest to fabryka klas.

Uwagi

Deklaracje funkcji licencjonowania fabryki klas powinny rozpoczynać się natychmiast po BEGIN_OLEFACTORY.

Wymagania

Nagłówek afxctl.h

END_OLEFACTORY

Kończy deklarację fabryki klas kontrolki.

END_OLEFACTORY(class_name)

Parametry

class_name
Nazwa klasy kontrolnej, której jest to fabryka klas.

Wymagania

Nagłówek afxctl.h

AfxVerifyLicFile

Wywołaj tę funkcję, aby sprawdzić, czy plik licencji o nazwie by pszLicFileName jest prawidłowy dla kontrolki OLE.

BOOL AFXAPI AfxVerifyLicFile(
    HINSTANCE  hInstance,
    LPCTSTR  pszLicFileName,
    LPOLESTR  pszLicFileContents,
    UINT cch = -1);

Parametry

hInstance
Dojście wystąpienia biblioteki DLL skojarzonej z licencjonowanym formantem.

pszLicFileName
Wskazuje ciąg znaków o wartości null zawierający nazwę pliku licencji.

pszLicFileContents
Wskazuje sekwencję bajtów, która musi być zgodna z sekwencją znalezioną na początku pliku licencji.

cch
Liczba znaków w pliku pszLicFileContents.

Wartość zwracana

Nonzero, jeśli plik licencji istnieje i zaczyna się od sekwencji znaków w pszLicFileContents; w przeciwnym razie 0.

Uwagi

Jeśli cch wartość to -1, ta funkcja używa:

_tcslen(pszLicFileContents);

Wymagania

Nagłówek afxctl.h

Zobacz też

Makra i globalne