Share via


Macro's voor eigenschapstoewijzing

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Deze macro's definiëren eigenschapstoewijzingen en -vermeldingen.

Naam Description
BEGIN_PROP_MAP Hiermee wordt het begin van de ATL-eigenschapstoewijzing gemarkeerd.
PROP_DATA_ENTRY Geeft de omvang of dimensies van een ActiveX-besturingselement aan.
PROP_ENTRY_TYPE Hiermee voert u een eigenschapsbeschrijving, eigenschapS-DISPID en eigenschappenpagina CLSID in de eigenschappentoewijzing in.
PROP_ENTRY_TYPE_EX Hiermee voert u een beschrijving van de eigenschap, eigenschap DISPID, eigenschappenpagina CLSID en IDispatch IID in de eigenschappentoewijzing in.
PROP_PAGE Hiermee voert u een eigenschappenpagina CLSID in de eigenschappentoewijzing in.
END_PROP_MAP Hiermee wordt het einde van de ATL-eigenschapstoewijzing gemarkeerd.

Requirements

Koptekst: atlcom.h

BEGIN_PROP_MAP

Hiermee wordt het begin van de eigenschapstoewijzing van het object gemarkeerd.

BEGIN_PROP_MAP(theClass)

Parameterwaarden

theClass
[in] Hiermee geeft u de klasse die de eigenschapstoewijzing bevat.

Opmerkingen

In het eigenschappenoverzicht worden beschrijvingen van eigenschappen, dispids van eigenschappen, eigenschappenpagina CLSID's en IDispatch IID's opgeslagen. Klassen IPerPropertyBrowsingImpl, IPersistPropertyBagImpl, IPersistStreamInitImpl en ISpecifyPropertyPagesImpl gebruiken de eigenschapstoewijzing om deze informatie op te halen en in te stellen.

Wanneer u een object maakt met de wizard ATL-project, maakt de wizard een lege eigenschapstoewijzing door BEGIN_PROP_MAP op te geven, gevolgd door END_PROP_MAP.

BEGIN_PROP_MAP slaat de omvang (dat wil gezegd de dimensies) van een eigenschapstoewijzing niet op, omdat een object dat gebruikmaakt van een eigenschapstoewijzing mogelijk geen gebruikersinterface heeft, dus dit heeft geen enkele mate. Als het object een ActiveX-besturingselement met een gebruikersinterface is, heeft het een bepaalde mate. In dit geval moet u PROP_DATA_ENTRY opgeven in uw eigenschappenoverzicht om de omvang op te geven.

Example

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

Geeft de omvang of dimensies van een ActiveX-besturingselement aan.

PROP_DATA_ENTRY( szDesc, member, vt)

Parameterwaarden

szDesc
[in] De beschrijving van de eigenschap.

Lid
[in] Het gegevenslid dat de omvang bevat; bijvoorbeeld m_sizeExtent.

Vt
[in] Hiermee geeft u het VARIANT-type van de eigenschap.

Opmerkingen

Deze macro zorgt ervoor dat het opgegeven gegevenslid behouden blijft.

Wanneer u een ActiveX-besturingselement maakt, voegt de wizard deze macro in na de eigenschapstoewijzingsmacro BEGIN_PROP_MAP en vóór de eigenschapstoewijzingsmacro END_PROP_MAP.

Example

In het volgende voorbeeld wordt de omvang van het object (m_sizeExtent) behouden.

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

Gebruik deze macro om een eigenschapsbeschrijving, eigenschapS-DISPID en eigenschappenpagina CLSID op te geven in de eigenschapstoewijzing van het object.

PROP_ENTRY_TYPE( szDesc, dispid, clsid, vt)

Parameterwaarden

szDesc
[in] De beschrijving van de eigenschap.

dispid
[in] De DISPID van de eigenschap.

clsid
[in] De CLSID van de gekoppelde eigenschappenpagina. Gebruik de speciale waarde CLSID_NULL voor een eigenschap die geen gekoppelde eigenschappenpagina heeft.

Vt
[in] Het type van de eigenschap.

Opmerkingen

De PROP_ENTRY macro is onveilig en afgeschaft. Het is vervangen door PROP_ENTRY_TYPE.

De BEGIN_PROP_MAP macro markeert het begin van de eigenschapstoewijzing; de END_PROP_MAP macro markeert het einde.

Example

Zie het voorbeeld voor BEGIN_PROP_MAP.

PROP_ENTRY_TYPE_EX

Vergelijkbaar met PROP_ENTRY_TYPE, maar kunt u een bepaalde IID opgeven als uw object meerdere dubbele interfaces ondersteunt.

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

Parameterwaarden

szDesc
[in] De beschrijving van de eigenschap.

dispid
[in] De DISPID van de eigenschap.

clsid
[in] De CLSID van de gekoppelde eigenschappenpagina. Gebruik de speciale waarde CLSID_NULL voor een eigenschap die geen gekoppelde eigenschappenpagina heeft.

iidDispatch
[in] De IID van de dubbele interface die de eigenschap definieert.

Vt
[in] Het type van de eigenschap.

Opmerkingen

De PROP_ENTRY_EX macro is onveilig en afgeschaft. Het is vervangen door PROP_ENTRY_TYPE_EX.

De BEGIN_PROP_MAP macro markeert het begin van de eigenschapstoewijzing; de END_PROP_MAP macro markeert het einde.

Example

In het volgende voorbeeld worden vermeldingen gegroepeerd voor IMyDual1 gevolgd door een vermelding voor IMyDual2. Groeperen op dubbele interface verbetert de prestaties.

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

Gebruik deze macro om een eigenschappenpagina CLSID in te voeren in de eigenschapstoewijzing van het object.

PROP_PAGE(clsid)

Parameterwaarden

clsid
[in] De CLSID van een eigenschappenpagina.

Opmerkingen

PROP_PAGE is vergelijkbaar met PROP_ENTRY_TYPE, maar vereist geen eigenschapsbeschrijving of DISPID.

Opmerking

Als u al een CLSID hebt ingevoerd met PROP_ENTRY_TYPE of PROP_ENTRY_TYPE_EX, hoeft u geen extra vermelding te maken met PROP_PAGE.

De BEGIN_PROP_MAP macro markeert het begin van de eigenschapstoewijzing; de END_PROP_MAP macro markeert het einde.

Example

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

END_PROP_MAP

Hiermee wordt het einde van de eigenschapstoewijzing van het object gemarkeerd.

END_PROP_MAP()

Opmerkingen

Wanneer u een object maakt met de wizard ATL-project, maakt de wizard een lege eigenschapstoewijzing door BEGIN_PROP_MAP op te geven, gevolgd door END_PROP_MAP.

Example

Zie het voorbeeld voor BEGIN_PROP_MAP.

Zie ook

Macro's