Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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:
DECLARE_CLASSFACTORY2 Menggunakan CComClassFactory2, yang mengontrol pembuatan melalui lisensi.
DECLARE_CLASSFACTORY_AUTO_THREAD Menggunakan CComClassFactoryAutoThread, yang membuat objek di beberapa apartemen.
DECLARE_CLASSFACTORY_SINGLETON Menggunakan CComClassFactorySingleton, yang membangun satu objek CComObjectGlobal.
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