Элементы управления ActiveX в MFC. Добавление стандартных свойств
Стандартные свойства отличаются от пользовательских свойств тем, что они уже реализуются классом COleControl
. COleControl
содержит предопределенные функции-члены, поддерживающие общие свойства элемента управления. Некоторые общие свойства включают заголовок элемента управления, а также цвет переднего плана и фона. Сведения о других стандартных свойствах см. в разделе Стандартные свойства, поддерживаемые мастером добавления свойств далее в этой статье. Записи о диспетчеризации для стандартных свойств всегда имеют префикс DISP_STOCKPROP.
В этой статье описывается добавление стандартных свойства (в данном случае, заголовка) к элементу ActiveX с помощью мастера добавления свойств, а также объясняются получившиеся изменения в коде. Разделы включают:
Добавление стандартного свойства с помощью мастера добавления свойств
Стандартные свойства, поддерживаемые мастером добавления свойств
-
Примечание.
Пользовательские элементы управления обычно имеют такие свойства, как Top, Left, Width, Height, Align, Tag, Name, TabIndex, TabStop и Parent. Однако контейнеры элементов ActiveX отвечают за реализацию этих свойств элемента управления, поэтому элементы ActiveX не должны поддерживать эти свойства.
Добавление стандартного свойства с помощью мастера добавления свойств
Добавление стандартных свойств требует меньше кода, чем добавление пользовательских свойств, так как поддержка свойства осуществляется автоматически с помощью COleControl
. В следующей процедуре показано добавление стандартного свойства Caption в платформу элементов ActiveX. Его также можно использовать для добавления других стандартных свойств. Замените имя выбранного стандартного свойства для Caption.
Добавление стандартного свойства Caption с помощью мастера добавления свойств
Загрузите проект элемента управления.
В представлении класса разверните узел библиотеки элемента управления.
Щелкните правой кнопкой мыши узел интерфейса для элемента управления (второй узел узла библиотеки), чтобы открыть контекстное меню.
В контекстном меню выберите команду Добавить, а затем — Добавить свойство.
Откроется мастер добавления свойств.
В поле Имя свойства щелкните Caption.
Нажмите кнопку Готово.
Изменения стандартных свойств в мастере добавления свойств
Так как 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