Condividi tramite


Macro della mappa proprietà

Queste macro definiscono le mappe delle proprietà e le voci.

Nome Descrizione
BEGIN_PROP_MAP Contrassegna l'inizio della mappa delle proprietà ATL.
PROP_DATA_ENTRY Indica l'extent, o le dimensioni, di un controllo ActiveX.
PROP_ENTRY_TYPE Immette una descrizione della proprietà, una proprietà DISPID e un CLSID della pagina delle proprietà nella mappa delle proprietà.
PROP_ENTRY_TYPE_EX Immette una descrizione della proprietà, una proprietà DISPID, CLSID della pagina delle proprietà e IDispatch un ID di proprietà nella mappa delle proprietà.
PROP_PAGE Immette un CLSID della pagina delle proprietà nella mappa delle proprietà.
END_PROP_MAP Contrassegna la fine della mappa delle proprietà ATL.

Requisiti

Intestazione: atlcom.h

BEGIN_PROP_MAP

Contrassegna l'inizio della mappa delle proprietà dell'oggetto.

BEGIN_PROP_MAP(theClass)

Parametri

theClass
[in] Specifica la classe contenente la mappa delle proprietà.

Osservazioni:

La mappa delle proprietà archivia le descrizioni delle proprietà, i DISPID delle proprietà, i CLSID della pagina delle proprietà e IDispatch gli ID. Classi IPerPropertyBrowsingImpl, IPersistPropertyBagImpl, IPersistStreamInitImpl e ISpecifyPropertyPagesImpl usano la mappa delle proprietà per recuperare e impostare queste informazioni.

Quando si crea un oggetto con la Creazione guidata progetto ATL, la procedura guidata creerà una mappa delle proprietà vuota specificando BEGIN_PROP_MAP seguito da END_PROP_MAP.

BEGIN_PROP_MAP non salva l'extent (ovvero le dimensioni) di una mappa delle proprietà, perché un oggetto che usa una mappa delle proprietà potrebbe non avere un'interfaccia utente, quindi non avrebbe extent. Se l'oggetto è un controllo ActiveX con un'interfaccia utente, ha un extent. In questo caso, è necessario specificare PROP_DATA_ENTRY nella mappa delle proprietà per fornire l'extent.

Esempio

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

Indica l'extent, o le dimensioni, di un controllo ActiveX.

PROP_DATA_ENTRY( szDesc, member, vt)

Parametri

szDesc
[in] Descrizione della proprietà.

membro
[in] Membro dati contenente l'extent; ad esempio . m_sizeExtent

vt
[in] Specifica il tipo VARIANT della proprietà.

Osservazioni:

Questa macro determina la persistenza del membro dati specificato.

Quando si crea un controllo ActiveX, la procedura guidata inserisce questa macro dopo la macro della mappa delle proprietà BEGIN_PROP_MAP e prima della macro della mappa delle proprietà END_PROP_MAP.

Esempio

Nell'esempio seguente l'extent dell'oggetto (m_sizeExtent) viene salvato in modo permanente.

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

Utilizzare questa macro per immettere una descrizione della proprietà, proprietà DISPID e CLSID della pagina delle proprietà nella mappa delle proprietà dell'oggetto.

PROP_ENTRY_TYPE( szDesc, dispid, clsid, vt)

Parametri

szDesc
[in] Descrizione della proprietà.

dispid
[in] DISPID della proprietà.

clsid
[in] CLSID della pagina delle proprietà associata. Utilizzare il valore speciale CLSID_NULL per una proprietà che non dispone di una pagina delle proprietà associata.

vt
[in] Tipo della proprietà.

Osservazioni:

La macro PROP_ENTRY non è protetta e deprecata. È stato sostituito con PROP_ENTRY_TYPE.

La macro BEGIN_PROP_MAP contrassegna l'inizio della mappa delle proprietà. La macro END_PROP_MAP contrassegna la fine.

Esempio

Vedere l'esempio per BEGIN_PROP_MAP.

PROP_ENTRY_TYPE_EX

Analogamente a PROP_ENTRY_TYPE, ma consente di specificare un ID specifico se l'oggetto supporta più interfacce duali.

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

Parametri

szDesc
[in] Descrizione della proprietà.

dispid
[in] DISPID della proprietà.

clsid
[in] CLSID della pagina delle proprietà associata. Utilizzare il valore speciale CLSID_NULL per una proprietà che non dispone di una pagina delle proprietà associata.

iidDispatch
[in] IID dell'interfaccia duale che definisce la proprietà.

vt
[in] Tipo della proprietà.

Osservazioni:

La macro PROP_ENTRY_EX non è protetta e deprecata. È stato sostituito con PROP_ENTRY_TYPE_EX.

La macro BEGIN_PROP_MAP contrassegna l'inizio della mappa delle proprietà. La macro END_PROP_MAP contrassegna la fine.

Esempio

Nell'esempio seguente vengono raggruppate le voci per IMyDual1 seguito da una voce per IMyDual2. Il raggruppamento per doppia interfaccia migliorerà le prestazioni.

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

Utilizzare questa macro per immettere un CLSID della pagina delle proprietà nella mappa delle proprietà dell'oggetto.

PROP_PAGE(clsid)

Parametri

clsid
[in] CLSID di una pagina delle proprietà.

Osservazioni:

PROP_PAGE è simile a PROP_ENTRY_TYPE, ma non richiede una descrizione della proprietà o DISPID.

Nota

Se è già stato immesso un CLSID con PROP_ENTRY_TYPE o PROP_ENTRY_TYPE_EX, non è necessario creare una voce aggiuntiva con PROP_PAGE.

La macro BEGIN_PROP_MAP contrassegna l'inizio della mappa delle proprietà. La macro END_PROP_MAP contrassegna la fine.

Esempio

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

END_PROP_MAP

Contrassegna la fine della mappa delle proprietà dell'oggetto.

END_PROP_MAP()

Osservazioni:

Quando si crea un oggetto con la Creazione guidata progetto ATL, la procedura guidata creerà una mappa delle proprietà vuota specificando BEGIN_PROP_MAP seguito da END_PROP_MAP.

Esempio

Vedere l'esempio per BEGIN_PROP_MAP.

Vedi anche

Macro