Ö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 IMyDual2bir 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.

Ayrıca bkz.

Makrolar