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.