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( );
成员
公共方法
名称 |
描述 |
---|---|
创建指定的CLSID的对象。 |
|
将许可证密钥,创建指定的CLSID的对象。 |
|
检索描述选件类工厂的授权功能信息。 |
|
锁定内存的选件类工厂。 |
|
创建并返回一个许可证密钥。 |
备注
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的模板参数,必须实现静态函数 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 和 许可证派生。CComClassFactory2Base,因此,从 IClassFactory2 和 **CComObjectRootEx< CComGlobalsThreadModel >**派生。
继承层次结构
CComObjectRootBase
license
IClassFactory2
CComClassFactory2
要求
Header: atlcom.h