Skip to content

Latest commit

 

History

History
110 lines (70 loc) · 4.42 KB

ccomclassfactorysingleton-class.md

File metadata and controls

110 lines (70 loc) · 4.42 KB
description title ms.date f1_keywords helpviewer_keywords ms.assetid
Learn more about: CComClassFactorySingleton Class
CComClassFactorySingleton Class
11/04/2016
CComClassFactorySingleton
ATLCOM/ATL::CComClassFactorySingleton
ATLCOM/ATL::CComClassFactorySingleton::CreateInstance
ATLCOM/ATL::CComClassFactorySingleton::m_spObj
CComClassFactorySingleton class
debb983c-382b-487b-8d42-7ea26dc158b8

CComClassFactorySingleton Class

This class derives from CComClassFactory and uses CComObjectGlobal to construct a single object.

Important

This class and its members cannot be used in applications that execute in the Windows Runtime.

Syntax

template<class T>
class CComClassFactorySingleton : public CComClassFactory

Parameters

T
Your class.

CComClassFactorySingleton derives from CComClassFactory and uses CComObjectGlobal to construct a single object. Each call to the CreateInstance method simply queries this object for an interface pointer.

Members

Public Methods

Name Description
CComClassFactorySingleton::CreateInstance Queries m_spObj for an interface pointer.

Public Data Members

Name Description
CComClassFactorySingleton::m_spObj The CComObjectGlobal object constructed by CComClassFactorySingleton.

Remarks

ATL objects normally acquire a class factory by deriving from CComCoClass. This class includes the macro DECLARE_CLASSFACTORY, which declares CComClassFactory as the default class factory. To use CComClassFactorySingleton, specify the DECLARE_CLASSFACTORY_SINGLETON macro in your object's class definition. For example:

[!code-cppNVC_ATL_COM#10]

Inheritance Hierarchy

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactory

CComClassFactorySingleton

Requirements

Header: atlcom.h

CComClassFactorySingleton::CreateInstance

Calls QueryInterface through m_spObj to retrieve an interface pointer.

STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);

Parameters

pUnkOuter
[in] If the object is being created as part of an aggregate, then pUnkOuter must be the outer unknown. Otherwise, pUnkOuter must be NULL.

riid
[in] The IID of the requested interface. If pUnkOuter is non- NULL, riid must be IID_IUnknown.

ppvObj
[out] A pointer to the interface pointer identified by riid. If the object does not support this interface, ppvObj is set to NULL.

Return Value

A standard HRESULT value.

CComClassFactorySingleton::m_spObj

The CComObjectGlobal object constructed by CComClassFactorySingleton.

CComPtr<IUnknown> m_spObj;

Remarks

Each call to the CreateInstance method simply queries this object for an interface pointer.

Note that the current form of m_spObj presents a breaking change from the way that CComClassFactorySingleton worked in previous versions of ATL. In previous versions the CComClassFactorySingleton object was created at the same time as the class factory, during server initialization. In Visual C++.NET 2003 and later, the object is created lazily, on the first request. This change could cause errors in programs that rely on early initialization.

See also

IClassFactory
CComClassFactory2 Class
CComClassFactoryAutoThread Class
CComObjectRootEx Class
CComGlobalsThreadModel
Class Overview