Freigeben über


Eigenschaftenzuordnungs-Makros

Diese Makros definieren Eigenschaftenzuordnungen und -einträge.

Name Beschreibung
BEGIN_PROP_MAP Markiert den Anfang der ATL-Eigenschaftszuordnung.
PROP_DATA_ENTRY Gibt das Ausmaß oder die Dimensionen eines ActiveX-Steuerelements an.
PROP_ENTRY_TYPE Gibt eine Eigenschaftsbeschreibung, Eigenschafts-DISPID und Eigenschaftenseite CLSID in die Eigenschaftenzuordnung ein.
PROP_ENTRY_TYPE_EX Gibt eine Eigenschaftsbeschreibung, Eigenschaft DISPID, Eigenschaftenseite CLSID und IDispatch IID in die Eigenschaftenzuordnung ein.
PROP_PAGE Gibt eine Eigenschaftsseite CLSID in die Eigenschaftszuordnung ein.
END_PROP_MAP Markiert das Ende der ATL-Eigenschaftszuordnung.

Anforderungen

Kopfzeile: atlcom.h

BEGIN_PROP_MAP

Markiert den Anfang der Eigenschaftenzuordnung des Objekts.

BEGIN_PROP_MAP(theClass)

Parameter

theClass
[in] Gibt die Klasse an, die die Eigenschaftszuordnung enthält.

Hinweise

Die Eigenschaftenzuordnung speichert Eigenschaftenbeschreibungen, Eigenschaften-DISPIDs, Eigenschaftenseiten-CLSIDs und IDispatch IIDs. Klassen IPerPropertyBrowsingImpl, IPersistPropertyBagImpl, IPersistStreamInitImpl und ISpecifyPropertyPagesImpl verwenden die Eigenschaftenzuordnung, um diese Informationen abzurufen und festzulegen.

Wenn Sie ein Objekt mit dem ATL-Projekt-Assistenten erstellen, erstellt der Assistent eine leere Eigenschaftenzuordnung, indem BEGIN_PROP_MAP gefolgt von END_PROP_MAP angegeben wird.

BEGIN_PROP_MAP speichert nicht den Umfang (d. h. die Dimensionen) einer Eigenschaftszuordnung, da ein Objekt, das eine Eigenschaftszuordnung verwendet, möglicherweise keine Benutzeroberfläche aufweist, sodass es kein Ausmaß hätte. Wenn es sich bei dem Objekt um ein ActiveX-Steuerelement mit einer Benutzeroberfläche handelt, hat es ein Ausmaß. In diesem Fall müssen Sie PROP_DATA_ENTRY in Ihrer Eigenschaftenzuordnung angeben, um den Umfang anzugeben.

Beispiel

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

Gibt das Ausmaß oder die Dimensionen eines ActiveX-Steuerelements an.

PROP_DATA_ENTRY( szDesc, member, vt)

Parameter

szDesc
[in] Die Eigenschaftsbeschreibung.

member
[in] Das Datenelement, das den Umfang enthält; beispiel: m_sizeExtent.

vt
[in] Gibt den VARIANT-Typ der Eigenschaft an.

Hinweise

Dieses Makro bewirkt, dass das angegebene Datenelement beibehalten wird.

Wenn Sie ein ActiveX-Steuerelement erstellen, fügt der Assistent dieses Makro nach dem Eigenschaftenzuordnungsmakro BEGIN_PROP_MAP und vor dem Eigenschaftenzuordnungsmakro END_PROP_MAP ein.

Beispiel

Im folgenden Beispiel wird der Umfang des Objekts (m_sizeExtent) beibehalten.

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

Verwenden Sie dieses Makro, um eine Eigenschaftsbeschreibung, Eigenschafts-DISPID und Eigenschaftsseite CLSID in die Eigenschaftszuordnung des Objekts einzugeben.

PROP_ENTRY_TYPE( szDesc, dispid, clsid, vt)

Parameter

szDesc
[in] Die Eigenschaftsbeschreibung.

dispid
[in] Die DISPID der Eigenschaft.

clsid
[in] Die CLSID der zugeordneten Eigenschaftenseite. Verwenden Sie den Sonderwert CLSID_NULL für eine Eigenschaft, die keine zugeordnete Eigenschaftenseite aufweist.

vt
[in] Der Typ der Eigenschaft.

Hinweise

Das PROP_ENTRY Makro war unsicher und veraltet. Es wurde durch PROP_ENTRY_TYPE ersetzt.

Das BEGIN_PROP_MAP Makro markiert den Anfang der Eigenschaftenzuordnung. Das END_PROP_MAP Makro markiert das Ende.

Beispiel

Sehen Sie sich das Beispiel für BEGIN_PROP_MAP an.

PROP_ENTRY_TYPE_EX

Ähnlich wie PROP_ENTRY_TYPE können Sie jedoch eine bestimmte IID angeben, wenn Ihr Objekt mehrere duale Schnittstellen unterstützt.

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

Parameter

szDesc
[in] Die Eigenschaftsbeschreibung.

dispid
[in] Die DISPID der Eigenschaft.

clsid
[in] Die CLSID der zugeordneten Eigenschaftenseite. Verwenden Sie den Sonderwert CLSID_NULL für eine Eigenschaft, die keine zugeordnete Eigenschaftenseite aufweist.

iidDispatch
[in] Die IID der dualen Schnittstelle, die die Eigenschaft definiert.

vt
[in] Der Typ der Eigenschaft.

Hinweise

Das PROP_ENTRY_EX-Makro war unsicher und veraltet. Sie wurde durch PROP_ENTRY_TYPE_EX ersetzt.

Das BEGIN_PROP_MAP Makro markiert den Anfang der Eigenschaftenzuordnung. Das END_PROP_MAP Makro markiert das Ende.

Beispiel

Im folgenden Beispiel werden Einträge für IMyDual1 gefolgt von einem Eintrag für IMyDual2. Durch gruppieren nach dualer Schnittstelle wird die Leistung verbessert.

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

Verwenden Sie dieses Makro, um eine Eigenschaftsseite CLSID in die Eigenschaftszuordnung des Objekts einzugeben.

PROP_PAGE(clsid)

Parameter

clsid
[in] Die CLSID einer Eigenschaftenseite.

Hinweise

PROP_PAGE ähnelt PROP_ENTRY_TYPE, erfordert jedoch keine Eigenschaftsbeschreibung oder DISPID.

Hinweis

Wenn Sie bereits eine CLSID mit PROP_ENTRY_TYPE oder PROP_ENTRY_TYPE_EX eingegeben haben, müssen Sie keinen zusätzlichen Eintrag mit PROP_PAGE vornehmen.

Das BEGIN_PROP_MAP Makro markiert den Anfang der Eigenschaftenzuordnung. Das END_PROP_MAP Makro markiert das Ende.

Beispiel

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

END_PROP_MAP

Markiert das Ende der Eigenschaftszuordnung des Objekts.

END_PROP_MAP()

Hinweise

Wenn Sie ein Objekt mit dem ATL-Projekt-Assistenten erstellen, erstellt der Assistent eine leere Eigenschaftenzuordnung, indem BEGIN_PROP_MAP gefolgt von END_PROP_MAP angegeben wird.

Beispiel

Sehen Sie sich das Beispiel für BEGIN_PROP_MAP an.

Siehe auch

Makros