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


Элементы управления ActiveX в MFC. Добавление стандартных свойств

Стандартные свойства отличаются от пользовательских свойств тем, что они уже реализуются классом COleControl. COleControl содержит предопределенные функции-члены, поддерживающие общие свойства элемента управления. Некоторые общие свойства включают заголовок элемента управления, а также цвет переднего плана и фона. Сведения о других стандартных свойствах см. в разделе Стандартные свойства, поддерживаемые мастером добавления свойств далее в этой статье. Записи о диспетчеризации для стандартных свойств всегда имеют префикс DISP_STOCKPROP.

В этой статье описывается добавление стандартных свойства (в данном случае, заголовка) к элементу ActiveX с помощью мастера добавления свойств, а также объясняются получившиеся изменения в коде. Разделы включают:

Добавление стандартного свойства с помощью мастера добавления свойств

Добавление стандартных свойств требует меньше кода, чем добавление пользовательских свойств, так как поддержка свойства осуществляется автоматически с помощью COleControl. В следующей процедуре показано добавление стандартного свойства Caption в платформу элементов ActiveX. Его также можно использовать для добавления других стандартных свойств. Замените имя выбранного стандартного свойства для Caption.

Добавление стандартного свойства Caption с помощью мастера добавления свойств

  1. Загрузите проект элемента управления.

  2. В представлении класса разверните узел библиотеки элемента управления.

  3. Щелкните правой кнопкой мыши узел интерфейса для элемента управления (второй узел узла библиотеки), чтобы открыть контекстное меню.

  4. В контекстном меню выберите команду Добавить, а затем — Добавить свойство.

    Откроется мастер добавления свойств.

  5. В поле Имя свойства щелкните Caption.

  6. Нажмите кнопку Готово.

Изменения стандартных свойств в мастере добавления свойств

Так как COleControl поддерживает стандартные свойства, мастер добавления свойств не изменяет объявление класса. Он добавляет свойство в схему диспетчеризации. Мастер добавления свойств добавляет следующую строку в схему диспетчеризации элемента управления, которая находится в реализации (CPP):

DISP_STOCKPROP_CAPTION()

Следующая строка добавляется в файл описания интерфейса элемента управления (IDL):

[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;

Эта строка присваивает свойству Caption конкретный идентификатор. Обратите внимание, что свойство доступно для привязки и будет запрашивать разрешение из базы данных перед изменением значения.

Благодаря этому свойство Caption доступно для пользователей элемента управления. Чтобы использовать значение стандартного свойства, необходимо получить доступ к переменной члена или функции-члену базового класса COleControl. Дополнительные сведения об этих переменных членов и функциях-членах см. в следующем разделе, "Стандартные свойства, поддерживаемые мастером добавления свойств".

Стандартные свойства, поддерживаемые мастером добавления свойств

Класс COleControl предоставляет девять стандартных свойств. Вы можете добавить нужные свойства с помощью мастера добавления свойств.

Свойство Запись схемы диспетчеризации Доступ к значению
Appearance DISP_STOCKPROP_APPEARANCE( ) Значение доступно как m_sAppearance.
BackColor DISP_STOCKPROP_BACKCOLOR( ) Значение доступно путем вызова GetBackColor.
BorderStyle DISP_STOCKPROP_BORDERSTYLE( ) Значение доступно как m_sBorderStyle.
Caption DISP_STOCKPROP_CAPTION( ) Значение доступно путем вызова InternalGetText.
Enabled DISP_STOCKPROP_ENABLED( ) Значение доступно как m_bEnabled.
Font DISP_STOCKPROP_FONT( ) Дополнительные сведения об использовании см. в статье Элементы ActiveX MFC: использование шрифтов.
ForeColor DISP_STOCKPROP_FORECOLOR( ) Значение доступно путем вызова GetForeColor.
hWnd DISP_STOCKPROP_HWND( ) Значение доступно как m_hWnd.
Text DISP_STOCKPROP_TEXT( ) Значение доступно путем вызова InternalGetText. Это свойство аналогично Caption, за исключением имени.
ReadyState DISP_STOCKPROP_READYSTATE() Значение доступно как m_lReadyState или GetReadyState.

Стандартные свойства и уведомление

У большинства стандартных свойств можно переопределить функции уведомления. Например, при изменении свойства BackColor вызывается функция OnBackColorChanged (функция-член класса элемента управления). Реализация по умолчанию (в COleControl) вызывает InvalidateControl. Переопределите эту функцию, если требуется выполнить дополнительные действия в ответ на эту ситуацию.

Свойства цвета

Вы можете использовать стандартные свойства ForeColor и BackColor или пользовательские свойства цвета при раскрашивании элемента управления. Чтобы использовать свойство цвета, вызовите функцию-член COleControl::TranslateColor. Параметры этой функции являются значением свойства цвета и необязательным дескриптором палитры. Возвращаемое значение — COLORREF. Его можно передать функциям GDI как SetTextColor и CreateSolidBrush.

Значения цвета для стандартных свойств ForeColor и BackColor доступны путем вызова GetForeColor или функции GetBackColor соответственно.

В следующем примере демонстрируется использование этих двух свойств цвета при рисовании элемента управления. Инициализируется временная переменная COLORREF и объект CBrush, который вызывает TranslateColor: один использует свойство ForeColor, а другой — свойство BackColor. Временный объект CBrush затем используется для закрашивания прямоугольника элемента управления, а цвет текста задается с помощью свойства ForeColor.

CBrush bkBrush(TranslateColor(GetBackColor()));
COLORREF clrFore = TranslateColor(GetForeColor());
pdc->FillRect(rcBounds, &bkBrush);
pdc->SetTextColor(clrFore);
pdc->DrawText(InternalGetText(), -1, rcBounds, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

См. также

Элементы ActiveX библиотеки MFC
Элементы ActiveX в MFC. Свойства
Элементы ActiveX в MFC. Методы
Класс COleControl