CComClassFactory2 クラス
更新 : 2007 年 11 月
このクラスは、IClassFactory2 インターフェイスを実装します。
template <
class license
>
class CComClassFactory2 : public IClassFactory2,
public CComObjectRootEx<CComGlobalsThreadModel>,
public license
パラメータ
license
次の静的関数を実装するクラス。static BOOL VerifyLicenseKey( BSTRbstr );
static BOOL GetLicenseKey( DWORDdwReserved**, BSTR***pBstr );
static BOOL IsLicenseValid( );
解説
CComClassFactory2 は、IClassFactory を拡張した IClassFactory2 インターフェイスを実装します。IClassFactory2 は、オブジェクトの作成をライセンスによって制御します。ライセンスを取得済みのコンピュータ上でクラス ファクトリを実行すると、ランタイム ライセンス キーが与えられます。このライセンス キーを取得すると、完全なライセンスを取得していないコンピュータ上でも、アプリケーションがオブジェクトをインスタンス化できるようになります。
ATL オブジェクトは、通常クラス ファクトリを CComCoClass から派生させることによって作成します。CComCoClass には DECLARE_CLASSFACTORY マクロが含まれています。このマクロは CComClassFactory を既定のクラス ファクトリとして宣言します。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
CComClassFactory2 のテンプレート パラメータ CMyLicense には、静的関数の 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 と license の両方から派生します。また、CComClassFactory2Base は IClassFactory2 と CComObjectRootEx< CComGlobalsThreadModel > から派生します。
必要条件
ヘッダー : atlcom.h
参照
参照
CComClassFactoryAutoThread クラス