Элементы управления ActiveX в MFC. Доступ к свойствам окружения
Этот раздел описывает элемент управления ActiveX может принимать внешние свойства контейнера элементов управления.
Элемент управления может получать сведения о текущем контейнере через внешние свойства контейнера. Эти свойства предоставляют визуальные характеристики, как цвет фона контейнера, текущий шрифт, используемый контейнером и рабочие характеристики, например ли контейнер в данный момент в режиме пользователя или в режиме конструктора. Элемент управления может использовать внешние свойства настраивать его внешний вид и расширения функциональности к указанному контейнеру, в который он внедрен. Однако элемент управления никогда не высказывать его контейнером будет поддерживать любое определенное внешнее свойство. Фактически, некоторые контейнеры могут не поддерживать все свойства окружения вообще. В отсутствие внешнего свойства, элемент управления должен следует принять значения по умолчанию.
Для получения внешнее свойство вызывать в COleControl::GetAmbientProperty. Эта функция должна идентификатор обработки для внешнего свойства как первый параметр (файл OLECTL.H определяет идентификаторов диспетчеризации для стандартного набора внешних свойств).
Параметры функции GetAmbientProperty идентификатор обработки, другой тег, ожидается тип свойства и указатель на память, значение должно быть возвращено. Тип данных, на которые ссылается этот указатель будет изменяться в зависимости от другого тега. Функция возвращает значение TRUE, если контейнер поддерживает свойство, в противном случае возвращается значение ЛОЖЬ.
В следующем примере получается значение с именем внешнего UserMode» свойства «. Если свойство не поддерживается контейнером, значение по умолчанию TRUE происходит:
BOOL bUserMode;
if(!GetAmbientProperty( DISPID_AMBIENT_USERMODE, VT_BOOL, &bUserMode))
bUserMode = TRUE;
Для удобства вспомогательные функции COleControl, обращающиеся к многие часто используемые свойства окружения и возвращает соответствующие свойства по умолчанию, если не доступны. Эти вспомогательные функции следующим образом:
-
Примечание
Вызывающий объект должен вызвать Release( ) для возвращенного шрифтом.
Если значение свойства внешнего изменяет (через определенное действие контейнера), вызывается функцию-член OnAmbientPropertyChanged элемента управления. Переопределите этот функцию-член для обработки такое уведомление. Параметр OnAmbientPropertyChanged для обработки затрагиваемого внешнего идентификатор свойства. Значение этого идентификатора обработки может быть DISPID_UNKNOWN, что означает, что один или несколько внешние свойства были изменены, но сведения о том, какие свойства были затронуты недоступна.