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

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)

要件

Header 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
アプリケーションに公開されるオブジェクト名。

lw1w2b1b2b3b4b5b6b7b8
クラスの CLSIDのコンポーネント。 これらのパラメーターの詳細については、「 IMPLEMENT_OLECREATEの解説」を参照してください。

解説

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

要件

Header afxctl.h

BEGIN_OLEFACTORY

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

BEGIN_OLEFACTORY(class_name)

パラメーター

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

解説

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

要件

Header afxctl.h

END_OLEFACTORY

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

END_OLEFACTORY(class_name)

パラメーター

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

要件

Header 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。

解説

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

_tcslen(pszLicFileContents);

要件

Header afxctl.h

関連項目

マクロとグローバル