CComClassFactory Sınıfı
Bu sınıf IClassFactory arabirimini uygular.
Sözdizimi
class CComClassFactory
: public IClassFactory,
public CComObjectRootEx<CComGlobalsThreadModel>
Üyeler
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
CComClassFactory::CreateInstance | Belirtilen CLSID nesnesini oluşturur. |
CComClassFactory::LockServer | Sınıf fabrikasını belleğe kilitler. |
Açıklamalar
CComClassFactory
, belirli bir CLSID nesnesini oluşturmaya ve yeni nesnelerin daha hızlı oluşturulmasına izin vermek için sınıf fabrikasını belleğe kilitlemeye yönelik yöntemleri içeren IClassFactory arabirimini uygular. IClassFactory
sistem kayıt defterine kaydettiğiniz ve CLSID atadığınız her sınıf için uygulanmalıdır.
ATL nesneleri normalde CComCoClass'tan türetilerek bir sınıf fabrikası alır. Bu sınıf, varsayılan sınıf fabrikası olarak bildiren CComClassFactory
makro DECLARE_CLASSFACTORY içerir. Bu varsayılanı geçersiz kılmak için sınıf tanımınızdaki XXX makrolarından birini DECLARE_CLASSFACTORY
belirtin. Örneğin, DECLARE_CLASSFACTORY_EX makro sınıf fabrikası için belirtilen sınıfı kullanır:
class ATL_NO_VTABLE CMyCustomClass :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyCustomClass, &CLSID_MyCustomClass>,
public IDispatchImpl<IMyCustomClass, &IID_IMyCustomClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
DECLARE_CLASSFACTORY_EX(CMyClassFactory)
// Remainder of class declaration omitted.
Yukarıdaki sınıf tanımı, CMyClassFactory
nesnenin varsayılan sınıf fabrikası olarak bunun kullanılacağını belirtir. CMyClassFactory
,'den CComClassFactory
türetilmelidir ve geçersiz kılmalıdır CreateInstance
.
ATL, sınıf fabrikası bildiren üç makro daha sağlar:
DECLARE_CLASSFACTORY2 Bir lisans aracılığıyla oluşturmayı denetleyen CComClassFactory2 kullanır.
DECLARE_CLASSFACTORY_AUTO_THREAD Birden çok dairede nesne oluşturan CComClassFactoryAutoThread kullanır.
DECLARE_CLASSFACTORY_SINGLETON Tek bir CComObjectGlobal nesnesi oluşturan CComClassFactorySingleton kullanır.
Gereksinimler
Üst bilgi: atlcom.h
CComClassFactory::CreateInstance
Belirtilen CLSID nesnesini oluşturur ve bu nesneye bir arabirim işaretçisi alır.
STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);
Parametreler
pUnkOuter
[in] Nesne bir toplamanın parçası olarak oluşturuluyorsa, pUnkOuter dış bilinmeyen olmalıdır. Aksi takdirde, pUnkOuter NULL olmalıdır.
riid
[in] İstenen arabirimin IID değeri. pUnkOuter NULL değilse, riid olmalıdırIID_IUnknown
.
ppvObj
[out] riid tarafından tanımlanan arabirim işaretçisine ilişkin bir işaretçi. Nesne bu arabirimi desteklemiyorsa, ppvObj NULL olarak ayarlanır.
Dönüş Değeri
Standart bir HRESULT değeri.
CComClassFactory::LockServer
Sırasıyla ve çağırarak _Module::Lock
modül kilit sayısını artırır ve _Module::Unlock
azaltma.
STDMETHOD(LockServer)(BOOL fLock);
Parametreler
sürü
[in] TRUE ise, kilit sayısı artırılır; aksi takdirde, kilit sayısı azalmış.
Dönüş Değeri
Standart bir HRESULT değeri.
Açıklamalar
_Module
CComModule'un genel örneğini veya ondan türetilmiş bir sınıfı ifade eder.
Çağırma LockServer
, istemcinin birden çok nesnenin hızlı bir şekilde oluşturulabilmesi için bir sınıf fabrikasında tutunmasını sağlar.
Ayrıca bkz.
CComObjectRootEx Sınıfı
CComGlobalsThreadModel
Sınıfa Genel Bakış