クラス ファクトリとライセンス

OLE コントロールのインスタンスを作成するために、コンテナー アプリケーションはコントロールのクラス ファクトリのメンバー関数を呼び出します。 コントロールは実際の OLE オブジェクトであるため、クラス ファクトリはコントロールのインスタンスを作成します。 すべての OLE コントロール クラスにはクラス ファクトリが必要です。

OLE コントロールのもう 1 つの重要な機能は、ライセンスを適用できることです。 ControlWizard を使用すると、コントロール プロジェクトの作成時にライセンスを組み込むことができます。 コントロール ライセンスの詳細については、「ActiveX コントロール: ActiveX コントロールのライセンス」を参照してください。

次の表に、コントロールのクラス ファクトリを宣言して実装し、コントロールのライセンスを付与するために使用するマクロと関数をいくつか示します。

クラス ファクトリとライセンス

マクロまたは関数 説明
DECLARE_OLECREATE_EX OLE コントロールまたはプロパティ ページのクラス ファクトリを宣言します。
IMPLEMENT_OLECREATE_EX コントロール GetClassID の関数を実装し、クラス ファクトリのインスタンスを宣言します。
BEGIN_OLEFACTORY ライセンス関数の宣言を開始します。
END_OLEFACTORY ライセンス関数の宣言を終了します。
AfxVerifyLicFile コントロールが特定のコンピューターで使用するためにライセンスされているかどうかを確認します。

DECLARE_OLECREATE_EX

クラス ファクトリとコントロール クラスの GetClassID メンバー関数を宣言します。

DECLARE_OLECREATE_EX(class_name)

パラメーター

class_name
コントロール クラスの名前。

解説

ライセンスをサポートしていないコントロールのコントロール クラス ヘッダー ファイルで、このマクロを使用します。

このマクロは、次のコード サンプルと同じ目的で機能します。

BEGIN_OLEFACTORY(CMyAxCtrl)
END_OLEFACTORY(CMyAxCtrl)

必要条件

ヘッダー afxctl.h

IMPLEMENT_OLECREATE_EX

コントロールのクラス ファクトリとコントロール クラスの GetClassID メンバー関数を実装します。

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

パラメーター

class_name
コントロール プロパティ ページ クラスの名前。

external_name
アプリケーションに公開されるオブジェクト名。

l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8
クラス CLSIDのコンポーネント。 これらのパラメーターの詳細については、「解説 IMPLEMENT_OLECREATE」を参照してください。

解説

このマクロは、マクロまたはマクロを使用するコントロール クラスの実装ファイルに DECLARE_OLECREATE_EXBEGIN_OLEFACTORYEND_OLEFACTORY 含まれている必要があります。 外部名は、他のアプリケーションに公開されている OLE コントロールの識別子です。 コンテナーはこの名前を使用して、このコントロール クラスのオブジェクトを要求します。

必要条件

ヘッダー afxctl.h

BEGIN_OLEFACTORY

コントロール クラスのヘッダー ファイルでクラス ファクトリの宣言を開始します。

BEGIN_OLEFACTORY(class_name)

パラメーター

class_name
クラス ファクトリを持つコントロール クラスの名前を指定します。

解説

クラス ファクトリ ライセンス関数の宣言は、直後 BEGIN_OLEFACTORYに開始する必要があります。

必要条件

ヘッダー afxctl.h

END_OLEFACTORY

コントロールのクラス ファクトリの宣言を終了します。

END_OLEFACTORY(class_name)

パラメーター

class_name
クラス ファクトリを持つコントロール クラスの名前。

必要条件

ヘッダー afxctl.h

AfxVerifyLicFile

この関数を呼び出して、指定された pszLicFileName ライセンス ファイルが OLE コントロールに対して有効であることを確認します。

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

パラメーター

hInstance
ライセンスされたコントロールに関連付けられている DLL のインスタンス ハンドル。

pszLicFileName
ライセンス ファイル名を含む null で終わる文字列を指します。

pszLicFileContents
ライセンス ファイルの先頭にあるシーケンスと一致する必要があるバイト シーケンスを指します。

cch
pszLicFileContents文字数。

戻り値

ライセンス ファイルが存在し、pszLicFileContents の文字シーケンスで始まる場合は 0 以外、それ以外の場合は 0。

解説

1 の場合 cch 、この関数は次を使用します。

_tcslen(pszLicFileContents);

必要条件

ヘッダー afxctl.h

関連項目

マクロとグローバル