クラス ファクトリとライセンス
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
アプリケーションに公開されるオブジェクト名。
l
、 w1
、 w2
、 b1
、 b2
、 b3
、 b4
、 b5
、 b6
、 b7
、 b8
クラスの 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