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łonek
[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.