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.