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
IClassFactory
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