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
, , , b2
b5
b7
b1
b3
b4
b6
w2
b8
Składniki klasy CLSID
. Aby uzyskać więcej informacji na temat tych parametrów, zobacz uwagi dotyczące IMPLEMENT_OLECREATE
programu .
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