Udostępnij za pośrednictwem


Makra mapy właściwości

Te makra definiują mapy właściwości i wpisy.

Nazwa/nazwisko opis
BEGIN_PROP_MAP Oznacza początek mapy właściwości ATL.
PROP_DATA_ENTRY Wskazuje zakres lub wymiary kontrolki ActiveX.
PROP_ENTRY_TYPE Wprowadza opis właściwości, właściwość DISPID i stronę właściwości CLSID do mapy właściwości.
PROP_ENTRY_TYPE_EX Wprowadza opis właściwości, właściwość DISPID, stronę właściwości CLSID i IDispatch identyfikator IID na mapie właściwości.
PROP_PAGE Wprowadza stronę właściwości CLSID do mapy właściwości.
END_PROP_MAP Oznacza koniec mapy właściwości ATL.

Wymagania

Nagłówek: atlcom.h

BEGIN_PROP_MAP

Oznacza początek mapy właściwości obiektu.

BEGIN_PROP_MAP(theClass)

Parametry

theClass
[in] Określa klasę zawierającą mapę właściwości.

Uwagi

Mapa właściwości przechowuje opisy właściwości, identyfikatory DISPID właściwości, identyfikatory CLSID strony właściwości i IDispatch identyfikatory IID. Klasy IPerPropertyBrowsingImpl, IPersistPropertyBagImpl, IPersistStreamInitImpl i ISpecifyPropertyPagesImpl używają mapy właściwości, aby pobrać i ustawić te informacje.

Podczas tworzenia obiektu za pomocą Kreatora projektu ATL kreator utworzy pustą mapę właściwości, określając BEGIN_PROP_MAP a następnie END_PROP_MAP.

BEGIN_PROP_MAP nie zapisuje zakresu (czyli wymiarów) mapy właściwości, ponieważ obiekt używający mapy właściwości może nie mieć interfejsu użytkownika, więc nie miałby żadnego zakresu. Jeśli obiekt jest kontrolką ActiveX z interfejsem użytkownika, ma zakres. W takim przypadku należy określić PROP_DATA_ENTRY na mapie właściwości, aby określić zakres.

Przykład

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

Wskazuje zakres lub wymiary kontrolki ActiveX.

PROP_DATA_ENTRY( szDesc, member, vt)

Parametry

szDesc
[in] Opis właściwości.

Członkowskich
[in] Element członkowski danych zawierający zakres; na przykład m_sizeExtent.

Vt
[in] Określa typ VARIANT właściwości.

Uwagi

To makro powoduje utrwalanie określonego elementu członkowskiego danych.

Podczas tworzenia kontrolki ActiveX kreator wstawia to makro po makrze mapy właściwości BEGIN_PROP_MAP i przed END_PROP_MAP makra mapy właściwości.

Przykład

W poniższym przykładzie zakres obiektu (m_sizeExtent) jest utrwalany.

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

Użyj tego makra, aby wprowadzić opis właściwości, właściwość DISPID i stronę właściwości CLSID do mapy właściwości obiektu.

PROP_ENTRY_TYPE( szDesc, dispid, clsid, vt)

Parametry

szDesc
[in] Opis właściwości.

Dispid
[in] Właściwość DISPID.

Clsid
[in] Identyfikator CLSID skojarzonej strony właściwości. Użyj wartości specjalnej CLSID_NULL dla właściwości, która nie ma skojarzonej strony właściwości.

Vt
[in] Typ właściwości.

Uwagi

Makro PROP_ENTRY było niezabezpieczone i przestarzałe. Został zastąpiony PROP_ENTRY_TYPE.

Makro BEGIN_PROP_MAP oznacza początek mapy właściwości; makro END_PROP_MAP oznacza koniec.

Przykład

Zobacz przykład BEGIN_PROP_MAP.

PROP_ENTRY_TYPE_EX

Podobnie jak PROP_ENTRY_TYPE, ale umożliwia określenie określonego identyfikatora IID, jeśli obiekt obsługuje wiele podwójnych interfejsów.

PROP_ENTRY_TYPE_EX( szDesc, dispid, clsid, iidDispatch, vt)

Parametry

szDesc
[in] Opis właściwości.

Dispid
[in] Właściwość DISPID.

Clsid
[in] Identyfikator CLSID skojarzonej strony właściwości. Użyj wartości specjalnej CLSID_NULL dla właściwości, która nie ma skojarzonej strony właściwości.

iidDispatch
[in] Identyfikator IID podwójnego interfejsu definiującego właściwość .

Vt
[in] Typ właściwości.

Uwagi

Makro PROP_ENTRY_EX było niezabezpieczone i przestarzałe. Został zastąpiony PROP_ENTRY_TYPE_EX.

Makro BEGIN_PROP_MAP oznacza początek mapy właściwości; makro END_PROP_MAP oznacza koniec.

Przykład

Poniższy przykład grupuje wpisy dla elementu IMyDual1 , po którym następuje wpis .IMyDual2 Grupowanie według podwójnego interfejsu poprawi wydajność.

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

Użyj tego makra, aby wprowadzić stronę właściwości CLSID do mapy właściwości obiektu.

PROP_PAGE(clsid)

Parametry

Clsid
[in] Identyfikator CLSID strony właściwości.

Uwagi

PROP_PAGE jest podobny do PROP_ENTRY_TYPE, ale nie wymaga opisu właściwości ani identyfikatora DISPID.

Uwaga

Jeśli wprowadzono już identyfikator CLSID z PROP_ENTRY_TYPE lub PROP_ENTRY_TYPE_EX, nie musisz wprowadzać dodatkowego wpisu za pomocą PROP_PAGE.

Makro BEGIN_PROP_MAP oznacza początek mapy właściwości; makro END_PROP_MAP oznacza koniec.

Przykład

BEGIN_PROP_MAP(CMyCtrl)
   OtherPropMapEntries
   PROP_PAGE(CLSID_DatePage)
   PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()

END_PROP_MAP

Oznacza koniec mapy właściwości obiektu.

END_PROP_MAP()

Uwagi

Podczas tworzenia obiektu za pomocą Kreatora projektu ATL kreator utworzy pustą mapę właściwości, określając BEGIN_PROP_MAP a następnie END_PROP_MAP.

Przykład

Zobacz przykład BEGIN_PROP_MAP.

Zobacz też

Makra