Makra map vlastností
Tato makra definují mapy vlastností a položky.
Název | Popis |
---|---|
BEGIN_PROP_MAP | Označí začátek mapování vlastností ATL. |
PROP_DATA_ENTRY | Určuje rozsah nebo dimenze ovládacího prvku ActiveX. |
PROP_ENTRY_TYPE | Do mapy vlastností zadá popis vlastnosti, vlastnost DISPID a CLSID stránky vlastností. |
PROP_ENTRY_TYPE_EX | Zadá popis vlastnosti, vlastnost DISPID, stránku vlastností CLSID a IDispatch IID do mapy vlastností. |
PROP_PAGE | Do mapy vlastností zadá CLSID stránky vlastností. |
END_PROP_MAP | Označí konec mapy vlastností ATL. |
Požadavky
Hlavička: atlcom.h
BEGIN_PROP_MAP
Označí začátek mapy vlastností objektu.
BEGIN_PROP_MAP(theClass)
Parametry
theClass
[v] Určuje třídu obsahující mapu vlastností.
Poznámky
Mapa vlastností ukládá popisy vlastností, identifikátory DISPID vlastností, identifikátory CLSId stránky vlastností a IDispatch
IDENTIFIKÁTORy IID. Třídy IPerPropertyBrowsingImpl, IPersistPropertyBagImpl, IPersistStreamInitImpl a ISpecifyPropertyPagesImpl používají mapu vlastností k načtení a nastavení těchto informací.
Když vytvoříte objekt pomocí Průvodce projektem ATL, průvodce vytvoří prázdnou mapu vlastností zadáním BEGIN_PROP_MAP následované END_PROP_MAP.
BEGIN_PROP_MAP neukládá rozsah (tj. dimenze) mapování vlastností, protože objekt používající mapu vlastností nemusí mít uživatelské rozhraní, takže by neměl žádný rozsah. Pokud je objekt ovládací prvek ActiveX s uživatelským rozhraním, má rozsah. V tomto případě je nutné zadat PROP_DATA_ENTRY v mapě vlastností, aby bylo možné zadat rozsah.
Příklad
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
Určuje rozsah nebo dimenze ovládacího prvku ActiveX.
PROP_DATA_ENTRY( szDesc, member, vt)
Parametry
szDesc
[v] Popis vlastnosti.
člen
[v] Datový člen obsahující rozsah; například m_sizeExtent
.
Vt
[v] Určuje typ VARIANT vlastnosti.
Poznámky
Toto makro způsobí zachování zadaného datového členu.
Když vytvoříte ovládací prvek ActiveX, průvodce vloží toto makro za makro mapování vlastností BEGIN_PROP_MAP a před makro mapování vlastností END_PROP_MAP.
Příklad
V následujícím příkladu je rozsah objektu (m_sizeExtent
) trvalý.
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
Toto makro slouží k zadání popisu vlastnosti, vlastnosti DISPID a CLSID stránky vlastností do mapy vlastností objektu.
PROP_ENTRY_TYPE( szDesc, dispid, clsid, vt)
Parametry
szDesc
[v] Popis vlastnosti.
dispid
[v] DISPID vlastnosti.
clsid
[v] CLSID přidružené stránky vlastností. Pro vlastnost, která nemá přidruženou stránku vlastností, použijte speciální hodnotu CLSID_NULL.
Vt
[v] Typ vlastnosti.
Poznámky
Makro PROP_ENTRY bylo nezabezpečené a zastaralé. Byla nahrazena PROP_ENTRY_TYPE.
Makro BEGIN_PROP_MAP označuje začátek mapy vlastností; END_PROP_MAP makro označuje konec.
Příklad
Podívejte se na příklad BEGIN_PROP_MAP.
PROP_ENTRY_TYPE_EX
Podobně jako PROP_ENTRY_TYPE, ale umožňuje zadat konkrétní IID, pokud objekt podporuje více duálních rozhraní.
PROP_ENTRY_TYPE_EX( szDesc, dispid, clsid, iidDispatch, vt)
Parametry
szDesc
[v] Popis vlastnosti.
dispid
[v] DISPID vlastnosti.
clsid
[v] CLSID přidružené stránky vlastností. Pro vlastnost, která nemá přidruženou stránku vlastností, použijte speciální hodnotu CLSID_NULL.
iidDispatch
[v] IID duálního rozhraní definující vlastnost.
Vt
[v] Typ vlastnosti.
Poznámky
Makro PROP_ENTRY_EX bylo nezabezpečené a zastaralé. Nahradila ho PROP_ENTRY_TYPE_EX.
Makro BEGIN_PROP_MAP označuje začátek mapy vlastností; END_PROP_MAP makro označuje konec.
Příklad
Následující příklad seskupuje položky pro IMyDual1
následované položkou pro IMyDual2
. Seskupení podle duálního rozhraní zlepší výkon.
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
Toto makro slouží k zadání vlastnosti CLSID stránky vlastností do mapy vlastností objektu.
PROP_PAGE(clsid)
Parametry
clsid
[v] CLSID stránky vlastností.
Poznámky
PROP_PAGE se podobá PROP_ENTRY_TYPE, ale nevyžaduje popis vlastnosti nebo DISPID.
Poznámka:
Pokud jste již zadali CLSID s PROP_ENTRY_TYPE nebo PROP_ENTRY_TYPE_EX, nemusíte provádět další položku s PROP_PAGE.
Makro BEGIN_PROP_MAP označuje začátek mapy vlastností; END_PROP_MAP makro označuje konec.
Příklad
BEGIN_PROP_MAP(CMyCtrl)
OtherPropMapEntries
PROP_PAGE(CLSID_DatePage)
PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()
END_PROP_MAP
Označí konec mapy vlastností objektu.
END_PROP_MAP()
Poznámky
Když vytvoříte objekt pomocí Průvodce projektem ATL, průvodce vytvoří prázdnou mapu vlastností zadáním BEGIN_PROP_MAP následované END_PROP_MAP.
Příklad
Podívejte se na příklad BEGIN_PROP_MAP.