Bagikan melalui


Makro Peta Properti

Makro ini menentukan peta dan entri properti.

Nama Deskripsi
BEGIN_PROP_MAP Menandai awal peta properti ATL.
PROP_DATA_ENTRY Menunjukkan tingkat, atau dimensi, kontrol ActiveX.
PROP_ENTRY_TYPE Memasukkan deskripsi properti, DISPID properti, dan halaman properti CLSID ke dalam peta properti.
PROP_ENTRY_TYPE_EX Memasukkan deskripsi properti, PROPERTI DISPID, halaman properti CLSID, dan IDispatch IID ke dalam peta properti.
PROP_PAGE Memasukkan halaman properti CLSID ke dalam peta properti.
END_PROP_MAP Menandai akhir peta properti ATL.

Persyaratan

Header: atlcom.h

BEGIN_PROP_MAP

Menandai awal peta properti objek.

BEGIN_PROP_MAP(theClass)

Parameter

theClass
[di] Menentukan kelas yang berisi peta properti.

Keterangan

Peta properti menyimpan deskripsi properti, DISPID properti, CLSID halaman properti, dan IDispatch IID. Kelas IPerPropertyBrowsingImpl, IPersistPropertyBagImpl, IPersistStreamInitImpl, dan ISpecifyPropertyPagesImpl menggunakan peta properti untuk mengambil dan mengatur informasi ini.

Saat Anda membuat objek dengan Wizard Proyek ATL, wizard akan membuat peta properti kosong dengan menentukan BEGIN_PROP_MAP diikuti dengan END_PROP_MAP.

BEGIN_PROP_MAP tidak menyimpan sejauh (yaitu, dimensi) peta properti, karena objek yang menggunakan peta properti mungkin tidak memiliki antarmuka pengguna, sehingga tidak akan memiliki tingkat. Jika objek adalah kontrol ActiveX dengan antarmuka pengguna, objek tersebut memiliki tingkat. Dalam hal ini, Anda harus menentukan PROP_DATA_ENTRY di peta properti Anda untuk menyediakan sejauh mana.

Contoh

BEGIN_PROP_MAP(CMyPropCtrl)
   PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
   PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
   PROP_ENTRY_TYPE("Property1", 1, CLSID_MyPropPage1, VT_BSTR)
   PROP_ENTRY_TYPE_EX("Caption", DISPID_CAPTION, CLSID_MyPropPage2, IID_IMyDual1, VT_BSTR)
   PROP_ENTRY_INTERFACE_CALLBACK("CorrectParamCallback", 0, CLSID_MyPropPage1, AllowedCLSID, VT_DISPATCH)
   PROP_ENTRY_INTERFACE_CALLBACK_EX("CorrectParamCallbackEx", 1, IID_IMyDual1, CLSID_MyPropPage2, AllowedCLSID, VT_UNKNOWN)
   PROP_PAGE(CLSID_MyPropPage3)
END_PROP_MAP()

PROP_DATA_ENTRY

Menunjukkan tingkat, atau dimensi, kontrol ActiveX.

PROP_DATA_ENTRY( szDesc, member, vt)

Parameter

szDesc
[di] Deskripsi properti.

anggota
[di] Anggota data yang berisi sejauh mana; misalnya, m_sizeExtent.

Vt
[di] Menentukan jenis VARIAN properti.

Keterangan

Makro ini menyebabkan anggota data yang ditentukan dipertahankan.

Saat Anda membuat kontrol ActiveX, panduan menyisipkan makro ini setelah makro peta properti BEGIN_PROP_MAP dan sebelum makro peta properti END_PROP_MAP.

Contoh

Dalam contoh berikut, sejauh mana objek (m_sizeExtent) dipertahankan.

BEGIN_PROP_MAP(CMyWindow)
   PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
   PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
END_PROP_MAP()

 

BEGIN_PROP_MAP(CMyCompositeCtrl)
   PROP_DATA_ENTRY("Width", m_nWidth, VT_UI4)
   PROP_DATA_ENTRY("Height", m_nHeight, VT_UI4)
END_PROP_MAP()

PROP_ENTRY_TYPE

Gunakan makro ini untuk memasukkan deskripsi properti, DISPID properti, dan halaman properti CLSID ke dalam peta properti objek.

PROP_ENTRY_TYPE( szDesc, dispid, clsid, vt)

Parameter

szDesc
[di] Deskripsi properti.

dispid
[di] DISPID properti.

clsid
[di] CLSID dari halaman properti terkait. Gunakan nilai khusus CLSID_NULL untuk properti yang tidak memiliki halaman properti terkait.

Vt
[di] Jenis properti.

Keterangan

Makro PROP_ENTRY tidak aman dan tidak digunakan lagi. Ini telah diganti dengan PROP_ENTRY_TYPE.

Makro BEGIN_PROP_MAP menandai awal peta properti; makro END_PROP_MAP menandai akhir.

Contoh

Lihat contoh untuk BEGIN_PROP_MAP.

PROP_ENTRY_TYPE_EX

Mirip dengan PROP_ENTRY_TYPE, tetapi memungkinkan Anda menentukan IID tertentu jika objek Anda mendukung beberapa antarmuka ganda.

PROP_ENTRY_TYPE_EX( szDesc, dispid, clsid, iidDispatch, vt)

Parameter

szDesc
[di] Deskripsi properti.

dispid
[di] DISPID properti.

clsid
[di] CLSID dari halaman properti terkait. Gunakan nilai khusus CLSID_NULL untuk properti yang tidak memiliki halaman properti terkait.

iidDispatch
[di] IID antarmuka ganda yang menentukan properti .

Vt
[di] Jenis properti.

Keterangan

Makro PROP_ENTRY_EX tidak aman dan tidak digunakan lagi. Ini telah diganti dengan PROP_ENTRY_TYPE_EX.

Makro BEGIN_PROP_MAP menandai awal peta properti; makro END_PROP_MAP menandai akhir.

Contoh

Contoh berikut mengelompokkan entri untuk IMyDual1 diikuti oleh entri untuk IMyDual2. Pengelompokan menurut antarmuka ganda akan meningkatkan performa.

BEGIN_PROP_MAP(CAtlEdit)
   PROP_ENTRY_TYPE_EX("Caption", DISPID_CAPTION, CLSID_MyPropPage2, IID_IMyDual1, VT_BSTR)
   PROP_ENTRY_TYPE_EX("Enabled", DISPID_ENABLED, CLSID_MyPropPage2, IID_IMyDual1, VT_BOOL)
   PROP_ENTRY_TYPE_EX("Width", DISPID_DRAWWIDTH, CLSID_MyPropPage2, IID_IMyDual2, VT_UINT)
END_PROP_MAP()

PROP_PAGE

Gunakan makro ini untuk memasukkan halaman properti CLSID ke dalam peta properti objek.

PROP_PAGE(clsid)

Parameter

clsid
[di] CLSID halaman properti.

Keterangan

PROP_PAGE mirip dengan PROP_ENTRY_TYPE, tetapi tidak memerlukan deskripsi properti atau DISPID.

Catatan

Jika Anda telah memasukkan CLSID dengan PROP_ENTRY_TYPE atau PROP_ENTRY_TYPE_EX, Anda tidak perlu membuat entri tambahan dengan PROP_PAGE.

Makro BEGIN_PROP_MAP menandai awal peta properti; makro END_PROP_MAP menandai akhir.

Contoh

BEGIN_PROP_MAP(CMyCtrl)
   OtherPropMapEntries
   PROP_PAGE(CLSID_DatePage)
   PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()

END_PROP_MAP

Menandai akhir peta properti objek.

END_PROP_MAP()

Keterangan

Saat Anda membuat objek dengan Wizard Proyek ATL, wizard akan membuat peta properti kosong dengan menentukan BEGIN_PROP_MAP diikuti dengan END_PROP_MAP.

Contoh

Lihat contoh untuk BEGIN_PROP_MAP.

Lihat juga

Macro