Condividi tramite


Classe CComClassFactorySingleton

Questa classe deriva da CComClassFactory e usa CComObjectGlobal per costruire un singolo oggetto.

Importante

Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.

Sintassi

template<class T>
class CComClassFactorySingleton : public CComClassFactory

Parametri

T
La tua classe.

CComClassFactorySingleton deriva da CComClassFactory e usa CComObjectGlobal per costruire un singolo oggetto. Ogni chiamata al CreateInstance metodo esegue semplicemente una query su questo oggetto per un puntatore di interfaccia.

Membri

Metodi pubblici

Nome Descrizione
CComClassFactorySingleton::CreateInstance Query per un puntatore m_spObj all'interfaccia.

Membri dati pubblici

Nome Descrizione
CComClassFactorySingleton::m_spObj Oggetto CComObjectGlobal costruito da CComClassFactorySingleton.

Osservazioni:

Gli oggetti ATL acquisiscono normalmente una class factory derivando da CComCoClass. Questa classe include la macro DECLARE_CLASSFACTORY, che dichiara CComClassFactory come class factory predefinita. Per usare CComClassFactorySingleton, specificare la macro DECLARE_CLASSFACTORY_SINGLETON nella definizione della classe dell'oggetto. Ad esempio:

class ATL_NO_VTABLE CMySingletonClass :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMySingletonClass, &CLSID_MySingletonClass>,
   public IMySingletonClass
{
public:
   DECLARE_CLASSFACTORY_SINGLETON(CMySingletonClass)

   // Remainder of class declaration omitted.

Gerarchia di ereditarietà

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactory

CComClassFactorySingleton

Requisiti

Intestazione: atlcom.h

CComClassFactorySingleton::CreateInstance

Chiama QueryInterface tramite m_spObj per recuperare un puntatore all'interfaccia.

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

Parametri

pUnkOuter
[in] Se l'oggetto viene creato come parte di un'aggregazione, pUnkOuter deve essere l'elemento sconosciuto esterno. In caso contrario, pUnkOuter deve essere NULL.

riid
[in] IID dell'interfaccia richiesta. Se pUnkOuter è diverso da NULL, riid deve essere IID_IUnknown.

ppvObj
[out] Puntatore al puntatore all'interfaccia identificato da riid. Se l'oggetto non supporta questa interfaccia, ppvObj è impostato su NULL.

Valore restituito

Valore HRESULT standard.

CComClassFactorySingleton::m_spObj

Oggetto CComObjectGlobal costruito da CComClassFactorySingleton.

CComPtr<IUnknown> m_spObj;

Osservazioni:

Ogni chiamata al metodo CreateInstance esegue semplicemente una query su questo oggetto per un puntatore di interfaccia.

Si noti che la forma corrente di m_spObj presenta un cambiamento di rilievo rispetto al modo in cui CComClassFactorySingleton funzionava nelle versioni precedenti di ATL. Nelle versioni precedenti l'oggetto CComClassFactorySingleton è stato creato contemporaneamente alla class factory durante l'inizializzazione del server. In Visual C++.NET 2003 e versioni successive l'oggetto viene creato in modo differire, nella prima richiesta. Questa modifica potrebbe causare errori nei programmi che si basano sull'inizializzazione anticipata.

Vedi anche

IClassFactory
Classe CComClassFactory2
Classe CComClassFactoryAutoThread
Classe CComObjectRootEx
CComGlobalsThreadModel
Cenni preliminari sulla classe