CComClassFactory2 クラス
このクラスは、IClassFactory2 インターフェイスを実装します。
template <
class license
>
class CComClassFactory2 : public IClassFactory2,
public CComObjectRootEx<CComGlobalsThreadModel>,
public license
パラメーター
license
次の静的関数を実装するクラス。static BOOL VerifyLicenseKey( BSTR bstr );
static BOOL GetLicenseKey( DWORD dwReserved**, 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 クラス