Share via


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 には、静的関数の VerifyLicenseKeyGetLicenseKey、および 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 は、CComClassFactory2Baselicense の両方から派生します。また、CComClassFactory2BaseIClassFactory2CComObjectRootEx< CComGlobalsThreadModel > から派生します。

必要条件

ヘッダー : atlcom.h

参照

参照

CComClassFactoryAutoThread クラス

CComClassFactorySingleton クラス

CComObjectRootEx クラス

CComGlobalsThreadModel

その他の技術情報

CComClassFactory2 のメンバ

ATL クラスの概要