次の方法で共有


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 には、静的関数の 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 クラスの概要