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.