共用方式為


屬性對應巨集

這些宏會定義屬性對應和專案。

名稱 描述
BEGIN_PROP_MAP 標記 ATL 屬性對應的開頭。
PROP_DATA_ENTRY 指出 ActiveX 控制件的範圍或維度。
PROP_ENTRY_TYPE 在屬性對應中輸入屬性描述、屬性 DISPID 和屬性頁 CLSID。
PROP_ENTRY_TYPE_EX 在屬性對應中輸入屬性描述、屬性 DISPID、屬性頁 CLSID 和 IDispatch IID。
PROP_PAGE 在屬性對應中輸入屬性頁 CLSID。
END_PROP_MAP 標記 ATL 屬性對應的結尾。

需求

標頭: atlcom.h

BEGIN_PROP_MAP

標記對象的屬性對應開頭。

BEGIN_PROP_MAP(theClass)

參數

theClass
[in]指定包含屬性對應的類別。

備註

屬性對應會儲存屬性描述、屬性 DISPID、屬性頁 CLSID 和 IDispatch IID。 類別 IPerPropertyBrowsingImpl、IPersistPropertyBagImplIPersistStreamInitImpl 和 ISpecifyPropertyPagesImpl 會使用屬性對應來擷取和設定此資訊。

當您使用 ATL 專案精靈建立物件時,精靈會藉由指定BEGIN_PROP_MAP後面接著 END_PROP_MAP來建立空的屬性對應。

BEGIN_PROP_MAP不會儲存屬性對應的範圍(也就是維度),因為使用屬性對應的物件可能沒有使用者介面,因此不會有任何範圍。 如果物件是具有使用者介面的 ActiveX 控制件,則具有範圍。 在此情況下,您必須在屬性對應中指定 PROP_DATA_ENTRY ,以提供範圍。

範例

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

指出 ActiveX 控制件的範圍或維度。

PROP_DATA_ENTRY( szDesc, member, vt)

參數

szDesc
[in]屬性描述。

成員
[in]包含範圍的數據成員;例如, m_sizeExtent

vt
[in]指定屬性的 VARIANT 類型。

備註

此巨集會導致指定的數據成員保存。

當您建立 ActiveX 控制件時,精靈會在屬性對應巨集BEGIN_PROP_MAP和屬性對應巨集END_PROP_MAP之前插入此巨集。

範例

在下列範例中,物件 (m_sizeExtent) 的範圍正在保存。

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

使用此巨集,在對象的屬性對應中輸入屬性描述、屬性 DISPID 和屬性頁 CLSID。

PROP_ENTRY_TYPE( szDesc, dispid, clsid, vt)

參數

szDesc
[in]屬性描述。

dispid
[in]屬性的 DISPID。

clsid
[in]相關聯屬性頁的CLSID。 針對沒有相關聯屬性頁的屬性,請使用特殊值CLSID_NULL。

vt
[in]屬性的類型。

備註

PROP_ENTRY 巨集不安全且已被取代。 它已取代為 PROP_ENTRY_TYPE。

BEGIN_PROP_MAP巨集標記屬性對應的開頭;END_PROP_MAP巨集標記結尾。

範例

請參閱BEGIN_PROP_MAP範例。

PROP_ENTRY_TYPE_EX

類似於 PROP_ENTRY_TYPE,但是如果您的物件支援多個雙重介面,則可以指定特定的 IID。

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

參數

szDesc
[in]屬性描述。

dispid
[in]屬性的 DISPID。

clsid
[in]相關聯屬性頁的CLSID。 針對沒有相關聯屬性頁的屬性,請使用特殊值CLSID_NULL。

iidDispatch
[in]定義 屬性之雙重介面的 IID。

vt
[in]屬性的類型。

備註

PROP_ENTRY_EX 巨集不安全且已被取代。 它已取代為 PROP_ENTRY_TYPE_EX。

BEGIN_PROP_MAP巨集標記屬性對應的開頭;END_PROP_MAP巨集標記結尾。

範例

下列範例會將 的專案 IMyDual1 分組,後面接著 的專案 IMyDual2。 依雙重介面分組可改善效能。

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

使用此巨集,在對象的屬性對應中輸入屬性頁 CLSID。

PROP_PAGE(clsid)

參數

clsid
[in]屬性頁的 CLSID。

備註

PROP_PAGE類似於 PROP_ENTRY_TYPE,但不需要屬性描述或 DISPID。

注意

如果您已輸入具有 PROP_ENTRY_TYPE 或 PROP_ENTRY_TYPE_EX 的 CLSID,則不需要使用 PROP_PAGE 進行其他專案。

BEGIN_PROP_MAP巨集標記屬性對應的開頭;END_PROP_MAP巨集標記結尾。

範例

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

END_PROP_MAP

標記對象的屬性對應結尾。

END_PROP_MAP()

備註

當您使用 ATL 專案精靈建立物件時,精靈會藉由指定 BEGIN_PROP_MAP後面接著END_PROP_MAP 來建立空的屬性對應。

範例

請參閱BEGIN_PROP_MAP範例。

另請參閱

巨集