Özellik Eşleme Makroları
Bu makrolar özellik eşlemelerini ve girdilerini tanımlar.
Veri Akışı Adı | Açıklama |
---|---|
BEGIN_PROP_MAP | ATL özellik eşlemesinin başlangıcını işaretler. |
PROP_DATA_ENTRY | ActiveX denetiminin kapsamını veya boyutlarını gösterir. |
PROP_ENTRY_TYPE | Özellik eşlemesine bir özellik açıklaması, özellik DISPID ve özellik sayfası CLSID girer. |
PROP_ENTRY_TYPE_EX | Özellik eşlemesine bir özellik açıklaması, özellik DISPID özelliği, özellik sayfası CLSID ve IDispatch IID girer. |
PROP_PAGE | Özellik eşlemesine bir özellik sayfası CLSID girer. |
END_PROP_MAP | ATL özellik eşlemesinin sonunu işaretler. |
Gereksinimler
Üst bilgi: atlcom.h
BEGIN_PROP_MAP
Nesnenin özellik eşlemesinin başlangıcını işaretler.
BEGIN_PROP_MAP(theClass)
Parametreler
theClass
[in] Özellik eşlemesini içeren sınıfı belirtir.
Açıklamalar
Özellik eşlemesi özellik açıklamalarını, özellik DISPID'lerini, özellik sayfası CLSID'lerini ve IDispatch
IID'leri depolar. IPerPropertyBrowsingImpl, IPersistPropertyBagImpl, IPersistStreamInitImpl ve ISpecifyPropertyPagesImpl sınıfları bu bilgileri almak ve ayarlamak için özellik eşlemesini kullanır.
ATL Proje Sihirbazı ile bir nesne oluşturduğunuzda, sihirbaz BEGIN_PROP_MAP ve ardından END_PROP_MAP belirterek boş bir özellik eşlemesi oluşturur.
BEGIN_PROP_MAP, özellik eşlemesi kullanan bir nesne kullanıcı arabirimine sahip olmadığından bir özellik eşlemesinin kapsamını (yani boyutları) kaydetmez, bu nedenle kapsamı yoktur. Nesne, kullanıcı arabirimine sahip bir ActiveX denetimiyse, bir kapsamı vardır. Bu durumda, kapsamı sağlamak için özellik haritanızda PROP_DATA_ENTRY belirtmeniz gerekir.
Örnek
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
ActiveX denetiminin kapsamını veya boyutlarını gösterir.
PROP_DATA_ENTRY( szDesc, member, vt)
Parametreler
szDesc
[in] Özellik açıklaması.
üye
[in] Kapsamı içeren veri üyesi; örneğin, m_sizeExtent
.
Vt
[in] Özelliğinin VARIANT türünü belirtir.
Açıklamalar
Bu makro, belirtilen veri üyesinin kalıcı hale alınmasına neden olur.
ActiveX denetimi oluşturduğunuzda, sihirbaz bu makroyu özellik eşleme makrosunun BEGIN_PROP_MAP sonra ve özellik eşleme makrosunun END_PROP_MAP önce ekler.
Örnek
Aşağıdaki örnekte, nesnenin (m_sizeExtent
) kapsamı kalıcıdır.
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
Nesnenin özellik eşlemesine bir özellik açıklaması, özellik DISPID ve özellik sayfası CLSID girmek için bu makroyu kullanın.
PROP_ENTRY_TYPE( szDesc, dispid, clsid, vt)
Parametreler
szDesc
[in] Özellik açıklaması.
dispid
[in] özelliği DISPID'tir.
clsid
[in] İlişkili özellik sayfasının CLSID'i. İlişkili özellik sayfası olmayan bir özellik için özel değer CLSID_NULL kullanın.
Vt
[in] Özelliğin türü.
Açıklamalar
PROP_ENTRY makrosu güvenli değildi ve kullanım dışıydı. PROP_ENTRY_TYPE ile değiştirildi.
BEGIN_PROP_MAP makro, özellik eşlemesinin başlangıcını, END_PROP_MAP makro da sonu işaretler.
Örnek
BEGIN_PROP_MAP örneğine bakın.
PROP_ENTRY_TYPE_EX
PROP_ENTRY_TYPE benzer, ancak nesneniz birden çok çift arabirimi destekliyorsa belirli bir IID belirtmenize olanak tanır.
PROP_ENTRY_TYPE_EX( szDesc, dispid, clsid, iidDispatch, vt)
Parametreler
szDesc
[in] Özellik açıklaması.
dispid
[in] özelliği DISPID'tir.
clsid
[in] İlişkili özellik sayfasının CLSID'i. İlişkili özellik sayfası olmayan bir özellik için özel değer CLSID_NULL kullanın.
iidDispatch
[in] özelliğini tanımlayan çift arabirimin IID değeri.
Vt
[in] Özelliğin türü.
Açıklamalar
PROP_ENTRY_EX makrosu güvenli değildi ve kullanım dışıydı. PROP_ENTRY_TYPE_EX ile değiştirildi.
BEGIN_PROP_MAP makro, özellik eşlemesinin başlangıcını, END_PROP_MAP makro da sonu işaretler.
Örnek
Aşağıdaki örnek için IMyDual1
girdileri ve ardından için IMyDual2
bir girdiyi gruplandırıyor. Çift arabirime göre gruplandırma performansı artırır.
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
Nesnenin özellik eşlemesine bir özellik sayfası CLSID girmek için bu makroyu kullanın.
PROP_PAGE(clsid)
Parametreler
clsid
[in] Özellik sayfasının CLSID'sini.
Açıklamalar
PROP_PAGE PROP_ENTRY_TYPE benzer, ancak özellik açıklaması veya DISPID gerektirmez.
Not
PROP_ENTRY_TYPE veya PROP_ENTRY_TYPE_EX içeren bir CLSID girdiyseniz, PROP_PAGE ile ek bir giriş yapmanız gerekmez.
BEGIN_PROP_MAP makro, özellik eşlemesinin başlangıcını, END_PROP_MAP makro da sonu işaretler.
Örnek
BEGIN_PROP_MAP(CMyCtrl)
OtherPropMapEntries
PROP_PAGE(CLSID_DatePage)
PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()
END_PROP_MAP
Nesnenin özellik eşlemesinin sonunu işaretler.
END_PROP_MAP()
Açıklamalar
ATL Proje Sihirbazı ile bir nesne oluşturduğunuzda, sihirbaz BEGIN_PROP_MAP ve ardından END_PROP_MAP belirterek boş bir özellik eşlemesi oluşturur.
Örnek
BEGIN_PROP_MAP örneğine bakın.