Элементы управления ActiveX в MFC. Использование изображений в элементе управления ActiveX
В этой статье описывается общий тип фигуры и способ реализации его из элемента управления ActiveX. Ниже приведен список разделов.
Общие сведения о пользовательских свойств рисунка
Реализация пользовательского свойства фигуры в элемент управления ActiveX
Добавление в проект элемента управления
Общие сведения о пользовательских свойств рисунка
Тип фигуры из одной группы в составе типы общие на определенные элементы управления ActiveX. Тип рисунка обрабатывает метафайлы, или растровые изображения, Значки и позволяет пользователю, чтобы указать изображение, отображаемое в элементе управления ActiveX. Пользовательские свойства рисунков реализуются с помощью объект рисунка и получать и задавать функции, которые позволяют пользователям доступ к свойству элемента управления фигуры. Пользователи элемента управления получить пользовательское свойство фигуры с помощью страницы свойств для наглядности хранения.
В дополнение к стандартному типу рисунка, типы шрифта и цвета также доступны. Дополнительные сведения об использовании стандартных шрифта введите в элемент управления ActiveX см. в статье Элементы управления ActiveX MFC. Использование шрифтов.
Классы элементов управления ActiveX предоставляют несколько компонентов можно использовать реализовать свойство фигуры в элементе управления. Эти компоненты включают:
Класс CPictureHolder.
Этот класс предоставляет удобный доступ к объекту фигуры и функциональные возможности для элемента, отображаемого рисунка пользовательским свойством.
Поддержка для свойств типа LPPICTUREDISP, реализованных с получает и задать функции.
Использование представления классов можно быстро добавить пользовательское свойство или свойства, которое поддерживает тип фигуры. Дополнительные сведения о добавлении свойства элемента управления ActiveX с представлением классов см. в статье Элементы управления ActiveX MFC. Свойства.
Страница свойств, управление свойство или свойства рисунков элемента управления.
Эта страница свойств часть команды в составе страницы стандартных свойств, доступных для элементов управления ActiveX. Дополнительные сведения о страницах свойств элементов управления ActiveX см. в разделе Элементы управления ActiveX MFC. С помощью страницы стандартных свойств статьи
Реализация пользовательского свойства фигуры в элемент управления ActiveX
После завершения действия, описанные в этом разделе, элемент управления может картинки его выбранных пользователем. Пользователи могут изменять, показанный на рисунке с помощью страницы свойств, на которой отображается текущий иллюстрация и присутствует кнопка обзора, которая позволяет пользователю отборным различным рисунках.
Пользовательское свойство фигуры реализуется с помощью процесс аналогичен использованному для реализации другие свойства, основное отличие состоит в том, что пользовательское свойство должно поддерживать тип фигуры. Поскольку элемент свойства рисунков должен быть прорисовывается элемент управления ActiveX, несколько добавления и изменения должны выполняться в свойство, прежде чем его можно полностью реализовать.
Для реализации пользовательского свойства рисунков необходимо выполнить следующие действия:
Добавьте код в проект элемента управления.
Стандартное идентификатор страницы свойств рисунка, элемент данных типа CPictureHolder и пользовательское свойство типа LPPICTUREDISP с реализацией get " и set для добавления.
Измените некоторые функции в классе элемента управления.
Эти изменения вносятся в несколько функций, отвечающие для рисования элемента управления ActiveX.
Добавление в проект элемента управления
Чтобы добавить идентификатор страницы свойств для стандартной страницы свойств рисунка, вставьте следующую линии после макроса BEGIN_PROPPAGEIDS в файле реализации элемента управления (CPP).
PROPPAGEID(CLSID_CPicturePropPage)
Также необходимо увеличить значение параметра числа выполнения макроса BEGIN_PROPPAGEIDS одним. Это показано в следующей линия:
BEGIN_PROPPAGEIDS(CMyAxPicCtrl, 2)
Чтобы добавить элемент данных CPictureHolder в класс элемента управления, добавьте следующую защищенный линии в разделе объявлений класса элемента управления в файл заголовка элемента управления (. H).
CPictureHolder m_pic;
Не должна называться элемент данных m_pic; любое имя было достаточным.
Добавьте пользовательское свойство, которое поддерживает тип фигуры.
Добавление пользовательского свойства рисунков с помощью мастера добавления свойства.
Загрузите проект элемента управления.
В представлении классов разверните узел библиотеки элемента управления.
Щелкните правой кнопкой мыши узел интерфейса для элемента управления (второго узла узла библиотеки), чтобы открыть контекстное меню.
В контекстном меню выберите команду Добавить, а затем Добавить свойство.
В поле Имя свойства введите имя свойства. Например цели, ControlPicture используются в этой процедуре.
В поле свойство Type, выберите IPictureDisp* для типа свойства.
В поле Тип реализации, щелкните Get/set методы.
Уникальные имена типа для получения и установки или функции принимают имена по умолчанию. (В этом примере имен, по умолчанию используется GetControlPicture и SetControlPicture).
Нажмите кнопку Готово.
Мастера добавления свойства добавьте следующий код между комментариями схемы подготовки к отправке в заголовке элемента управления (. Файл H).
IPictureDisp* GetControlPicture(void);
void SetControlPicture(IPictureDisp* pVal);
Кроме того, следующий код был представлен в схеме подготовки к отправке файла реализации элемента управления (CPP).
DISP_PROPERTY_EX_ID(CMyAxPicCtrl, "ControlPicture", dispidControlPicture,
GetControlPicture, SetControlPicture, VT_PICTURE)
Мастера добавления свойства также добавляет следующие 2 функции заглушки в файле реализации элемента управления:
IPictureDisp* CWizardGenCtrl::GetControlPicture(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: Add your dispatch handler code here
return NULL;
}
void CWizardGenCtrl::SetControlPicture(IPictureDisp* /*pVal*/)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: Add your property handler code here
SetModifiedFlag();
}
Примечание
Свои имена класса элемента управления и функции могут отличаться от предыдущего примера.
Изменения в проект элемента управления
После того как были сделаны необходимые добавления в проект элемента управления, необходимо изменить несколько функций, которые влияют на отрисовку элемента управления ActiveX. Эти функции, OnResetState, OnDraw и получение и установка функции пользовательского свойства рисунков, расположены в файле реализации элемента управления. (Заметим, что в этом примере класс элемента управления вызывают CSampleCtrl, элемент данных CPictureHolder вызывается m_pic и другое имя свойства рисунков ControlPicture).
В функции OnResetState элемента управления добавьте следующую необязательная линия после вызова метода COleControl::OnResetState:
m_pic.CreateEmpty();
Задает изображение элемента управления в пустой рисунок.
Чтобы нарисовать фигуру правильно, вызывать в CPictureHolder::Render в функции OnDraw элемента управления. Измените в функцию, чтобы иметь следующий вид:
void CMyAxPicCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& /*rcInvalid*/)
{
if (!pdc)
return;
m_pic.Render(pdc, rcBounds, rcBounds);
}
В функции получения свойства рисунков пользовательского элемента управления, добавьте следующую линия:
return m_pic.GetPictureDispatch();
В функции задание свойства рисунков пользовательского элемента управления, добавьте следующие линии:
m_pic.SetPictureDispatch(pVal);
InvalidateControl();
Свойство фигуры необходимо сделать упорным так, как показано на сведения, добавленные во время разработки вверх во время выполнения. Добавьте следующую линия на COleControl- функция DoPropExchange производного класса.
PX_Picture(pPX, _T("ControlPicture"), m_pic);
Примечание
Свои имена классов и функции могут отличаться от предыдущего примера.
По завершении изменения следует перестроить проект включение новую функцию пользовательского свойства рисунков и использовать тестовый контейнер для выполнения новое свойство. Сведения о доступе к тестовому контейнеру см. в разделе Тестирование свойств и событий при помощи тестового контейнера.
См. также
Основные понятия
Элементы управления ActiveX MFC