Bagikan melalui


Kelas CComClassFactory

Kelas ini mengimplementasikan antarmuka IClassFactory .

Sintaks

class CComClassFactory
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Anggota

Metode Publik

Nama Deskripsi
CComClassFactory::CreateInstance Membuat objek DARI CLSID yang ditentukan.
CComClassFactory::LockServer Mengunci pabrik kelas dalam memori.

Keterangan

CComClassFactorymengimplementasikan antarmuka IClassFactory, yang berisi metode untuk membuat objek CLSID tertentu, serta mengunci pabrik kelas dalam memori untuk memungkinkan objek baru dibuat lebih cepat. IClassFactory harus diimplementasikan untuk setiap kelas yang Anda daftarkan di registri sistem dan tempat Anda menetapkan CLSID.

Objek ATL biasanya memperoleh pabrik kelas dengan berasal dari CComCoClass. Kelas ini mencakup DECLARE_CLASSFACTORY makro, yang menyatakan CComClassFactory sebagai pabrik kelas default. Untuk mengambil alih default ini, tentukan salah DECLARE_CLASSFACTORYsatu makro XXX dalam definisi kelas Anda. Misalnya, makro DECLARE_CLASSFACTORY_EX menggunakan kelas yang ditentukan untuk pabrik kelas:

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.

Definisi kelas di atas menentukan yang CMyClassFactory akan digunakan sebagai pabrik kelas default objek. CMyClassFactory harus berasal dari CComClassFactory dan mengambil alih CreateInstance.

ATL menyediakan tiga makro lain yang mendeklarasikan pabrik kelas:

Persyaratan

Header: atlcom.h

CComClassFactory::CreateInstance

Membuat objek CLSID yang ditentukan dan mengambil penunjuk antarmuka ke objek ini.

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

Parameter

pUnkOuter
[di] Jika objek sedang dibuat sebagai bagian dari agregat, maka pUnkOuter harus menjadi bagian luar yang tidak diketahui. Jika tidak, pUnkOuter harus NULL.

riid
[masuk] IID antarmuka yang diminta . Jika pUnkOuter non-NULL, riid harus IID_IUnknown.

ppvObj
[out] Penunjuk ke penunjuk antarmuka yang diidentifikasi oleh riid. Jika objek tidak mendukung antarmuka ini, ppvObj diatur ke NULL.

Tampilkan Nilai

Nilai HRESULT standar.

CComClassFactory::LockServer

Kenaikan dan penurunan jumlah kunci modul dengan memanggil _Module::Lock dan _Module::Unlock, masing-masing.

STDMETHOD(LockServer)(BOOL fLock);

Parameter

Kawanan
[di] Jika TRUE, jumlah kunci akan bertambah; jika tidak, jumlah kunci diderementasi.

Tampilkan Nilai

Nilai HRESULT standar.

Keterangan

_Module mengacu pada instans global CComModule atau kelas yang berasal darinya.

Panggilan LockServer memungkinkan klien untuk memegang pabrik kelas sehingga beberapa objek dapat dibuat dengan cepat.

Lihat juga

Kelas CComObjectRootEx
CComGlobalsThreadModel
Gambaran Umum Kelas