Sdílet prostřednictvím


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.

Viz také

Makra