Доступ к свойствам контейнера.
Контрольный элемент может получать информацию о свойствах контейнера. Эти свойства могут содержать важную для отображения информацию, например, цвет фона контейнера, шрифт, используемый в контейнере. Элемент ActiveX может использовать эти свойства для своего отображения. Следует заметить, что некоторые контейнеры могут не поддерживать указанные свойства, поэтому элемент ActiveX должен иметь какое-то значение по умолчанию.
Для доступа к свойствам контейнера можно использовать метод класса COleControl::GetAmbientProperty:
BOOL GetAmbientProperty( DISPID dwDispid, VARTYPE
vtProp, void* pvProp );
Первый параметр этого метода – идентификатор для свойства контейнера. Стандартные свойства контейнера приводятся в файле OLECTL.H:
#define DISPID_AMBIENT_BACKCOLOR (-701)
#define DISPID_AMBIENT_DISPLAYNAME (-702)
#define DISPID_AMBIENT_FONT (-703)
#define DISPID_AMBIENT_FORECOLOR (-704)
#define DISPID_AMBIENT_LOCALEID (-705)
#define DISPID_AMBIENT_MESSAGEREFLECT (-706)
#define DISPID_AMBIENT_SCALEUNITS (-707)
#define DISPID_AMBIENT_TEXTALIGN (-708)
#define DISPID_AMBIENT_USERMODE (-709)
#define DISPID_AMBIENT_UIDEAD (-710)
#define DISPID_AMBIENT_SHOWGRABHANDLES (-711)
#define DISPID_AMBIENT_SHOWHATCHING (-712)
#define DISPID_AMBIENT_DISPLAYASDEFAULT (-713)
#define DISPID_AMBIENT_SUPPORTSMNEMONICS (-714)
#define DISPID_AMBIENT_AUTOCLIP (-715)
#define DISPID_AMBIENT_APPEARANCE (-716)
#define DISPID_AMBIENT_CODEPAGE (-725)
#define DISPID_AMBIENT_PALETTE (-726)
#define DISPID_AMBIENT_CHARSET (-727)
#define DISPID_AMBIENT_TRANSFERPRIORITY (-728)
#define DISPID_AMBIENT_RIGHTTOLEFT (-732)
#define DISPID_AMBIENT_TOPTOBOTTOM (-733)
Второй параметр функции GetAmbientProperty определяет ожидаемый тип свойства, а третий – адрес, по которому будет записано значение. При успешном выполнении и поддержке свойства контейнером функция возвращает TRUE, в противном случае –FALSE.
Ниже приводится фрагмент кода для получения свойства контейнера UserMode:
BOOL bUserMode;
if( !GetAmbientProperty( DISPID_AMBIENT_USERMODE,
VT_BOOL, &bUserMode ) )
bUserMode = TRUE;
Класс COleControl содержит методы для доступа к часто используемым свойствам контейнера (таблица 5):
Таблица 5. Некоторые функции для получения свойств контейнера.
Функция |
Назначение |
OLE_COLOR AmbientBackColor() |
Возвращает значение фонового цвета окружения. |
CString AmbientDisplayName() |
Возвращает имя элемента в контейнере. |
OLE_COLOR AmbientForeColor() |
Возвращает значение цвета переднего плана окружения. |
LPFONTDISP AmbientFont() |
Возвращает значение шрифта окружения. |
short AmbientTextAlign() |
Возвращает тип тектового выравнивания в контейнере: 0 – обычное выравнивание; 1 – по левому краю; 2 – по центру; 3 – по правому краю. |
BOOL AmbientUIDead() |
Возвращает, должен ли элемент реагировать на действия пользователя: не 0 , если элемент должен реагировать на действия пользователя |
BOOL AmbientUserMode() |
Возвращает режим контейнера: 0-режим конструирования, не 0 – рабочий режим. |
BOOL GetAmbientProperty( DISPID dwDispid, VARTYPE vtProp, void* pvProp ); |
Возвращает значение указанного как параметр свойства окружения. |