CComClassFactory2 クラス
このクラスは、IClassFactory2 インターフェイスを実装します。
template <
class license
>
class CComClassFactory2 : public IClassFactory2,
public CComObjectRootEx<CComGlobalsThreadModel>,
public license
パラメーター
ライセンス
次の静的関数を実装するクラス:static BOOL VerifyLicenseKey( BSTR bstr) ;
static BOOL GetLicenseKey( DWORD dwReserved**, BSTR*** pBstr) ;
static BOOL IsLicenseValid( );
メンバー
パブリック メソッド
名前 |
説明 |
---|---|
指定の CLSID を持つオブジェクトを作成します。 |
|
ライセンス キーが指定された、指定の CLSID を持つオブジェクトを作成します。 |
|
クラス ファクトリのライセンス処理機能を説明する情報を取得します。 |
|
メモリのクラス ファクトリをロックします。 |
|
ライセンス キーを作成して返します。 |
解説
CComClassFactory2 は IClassFactoryの拡張子である IClassFactory2 のインターフェイスを実装します。IClassFactory2 のコントロールは、ライセンスを通じて作成について説明します。ライセンスされたコンピューターで実装するクラス ファクトリは、ランタイム ライセンス キーを提供できます。このライセンス キーはマシンの完全なライセンスがない場合、オブジェクトをインスタンス化できます。
ATL オブジェクトは CComCoClassから派生させて、通常はクラス ファクトリを取得します。既定のクラス ファクトリとして CComClassFactory を宣言するこのクラスでは、マクロ DECLARE_CLASSFACTORYが含まれています。CComClassFactory2を使用するには、オブジェクトのクラス定義に DECLARE_CLASSFACTORY2 のマクロを指定します。例:
class ATL_NO_VTABLE CMyClass2 :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyClass2, &CLSID_MyClass>,
public IDispatchImpl<IMyClass, &IID_IMyClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IDispatchImpl<IMyDualInterface, &__uuidof(IMyDualInterface), &LIBID_NVC_ATL_COMLib, /* wMajor = */ 1, /* wMinor = */ 0>
{
public:
DECLARE_CLASSFACTORY2(CMyLicense)
// Remainder of class declaration omitted
CMyLicenseの CComClassFactory2へのテンプレート パラメーターは、静的関数 VerifyLicenseKey、GetLicenseKeyと IsLicenseValidを実装する必要があります。次は、単純なライセンス クラスの例です:
class CMyLicense
{
protected:
static BOOL VerifyLicenseKey(BSTR bstr)
{
USES_CONVERSION;
return !lstrcmp(OLE2T(bstr), _T("My run-time license key"));
}
static BOOL GetLicenseKey(DWORD /*dwReserved*/, BSTR* pBstr)
{
USES_CONVERSION;
*pBstr = SysAllocString( T2OLE(_T("My run-time license key")));
return TRUE;
}
static BOOL IsLicenseValid() { return TRUE; }
};
CComClassFactory2 は、両方の CComClassFactory2Base と ライセンスから取得します。CComClassFactory2Baseは、IClassFactory2 と **CComObjectRootEx< CComGlobalsThreadModel >**から取得します。
継承階層
CComObjectRootBase
license
IClassFactory2
CComClassFactory2
必要条件
ヘッダー : atlcom.h
参照
関連項目
CComClassFactoryAutoThread クラス