Поделиться через


Макросы сопоставления свойств

Эти макросы определяют карты свойств и записи.

Имя Описание
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, IPersistPropertyBagImpl, IPersistStreamInitImpl и 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] Описание свойства.

member
[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.

Примечание.

Если вы уже ввели CLSID с PROP_ENTRY_TYPE или PROP_ENTRY_TYPE_EX, вам не нужно вносить дополнительную запись с 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.

См. также

Макросы