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);

    • 静态 BOOL IsLicenseValid( );

成员

86sktbds.collapse_all(zh-cn,VS.110).gif公共方法

名称

描述

CComClassFactory2::CreateInstance

创建指定的CLSID的对象。

CComClassFactory2::CreateInstanceLic

将许可证密钥,创建指定的CLSID的对象。

CComClassFactory2::GetLicInfo

检索描述选件类工厂的授权功能信息。

CComClassFactory2::LockServer

锁定内存的选件类工厂。

CComClassFactory2::RequestLicKey

创建并返回一个许可证密钥。

备注

CComClassFactory2 实现 IClassFactory2 接口,必须是 IClassFactory扩展。IClassFactory2 控件对象创建通过许可证。对一个授权的计算机的选件类工厂可以提供一个运行时许可证密钥。在完整的许可证的计算机不存在时,此许可证密钥允许应用程序实例化对象。

ATL对象通过派生通常获取选件类工厂从 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

CMyLicense,对 CComClassFactory2的模板参数,必须实现静态函数 VerifyLicenseKeyGetLicenseKeyIsLicenseValid。下面是简单的许可证选件类的示例:

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; }
};

CComClassFactory2CComClassFactory2Base许可证派生。CComClassFactory2Base,因此,从 IClassFactory2 和 **CComObjectRootEx< CComGlobalsThreadModel >**派生。

继承层次结构

CComObjectRootBase

license

CComObjectRootEx

IClassFactory2

CComClassFactory2

要求

Header: atlcom.h

请参见

参考

CComClassFactoryAutoThread选件类

CComClassFactorySingleton选件类

CComObjectRootEx选件类

CComGlobalsThreadModel

其他资源

ATL选件类概述