Элементы управления ActiveX MFC: Использование изображения в элементе управления ActiveX
В этой статье описывается общий тип изображения и, как реализовать его на элемент управления ActiveX.Ниже приведен список разделов.
Общие сведения о пользовательских свойств изображения
Реализация пользовательского свойства в элемент управления ActiveX изображения
Добавление в проект элемента управления
Общие сведения о пользовательских свойств изображения
Тип изображения одна из групп в составе типы общих к определенным элементам управления ActiveX.Тип изображения обрабатывает метафайлы, растровые изображения, значки и позволяет пользователю указать изображение, отображаемое в элементе управления ActiveX.Пользовательские свойства изображения реализуются с помощью объект изображения и получают и функциям наборов, позволяющие пользователям доступ к свойству элемента управления изображениями.Пользователи обращаются элемента управления для пользовательского свойства изображения с помощью страницы свойств изображения стандартное.
В дополнение к стандартному типу изображения, типы шрифта и цвета, также доступны.Дополнительные сведения об использовании стандартных шрифта введите элемент управления ActiveX см. в статье Элементы управления ActiveX MFC: Использование шрифтов.
Классы элемента управления ActiveX предоставляют несколько компонентов, которые можно использовать для реализации свойства изображения в элементе управления.Эти компоненты включают:
Класс CPictureHolder.
Этот класс обеспечивает простой доступ к объекту изображения и функциональность для элемента, отображаемого пользовательским свойством изображения.
Поддержка свойства типа LPPICTUREDISP, реализованных с получает и функциям наборов.
Использование представления классов можно быстро добавить пользовательское свойство или свойства, которое поддерживает тип изображения.Дополнительные сведения о добавлении свойства элемента управления ActiveX с представлением классов см. в статье Элементы управления ActiveX MFC: Свойства.
Страница свойств, которая управляет свойство или свойства изображения элемента управления.
Эта страница свойств являются частью группы в составе страницы стандартных свойств, доступных к элементам управления ActiveX.Дополнительные сведения о страницах свойств элемента управления ActiveX см. в статье Элементы управления ActiveX MFC: С помощью страницы стандартных свойств
Реализация пользовательского свойства в элемент управления ActiveX изображения
После завершения действия, описанные в этом разделе, элемент управления может картинки выбранные его пользователем.Пользователь может изменить отображаемое изображение с помощью страницы свойств, на которой отображается текущее изображение и имеет кнопку обзора, которая позволяет пользователю выбирать другим изображениям.
Пользовательское свойство изображения реализуется с помощью процесс, представленный этим, использованный для реализации другие свойства, основное отличие состоит в том, что пользовательское свойство должно поддерживать тип изображения.Поскольку элемент свойства изображения должен отображаться элемент управления ActiveX, несколько добавлений и изменения необходимо сделать со свойством, прежде чем на них можно будет полностью реализовать.
Чтобы реализовать пользовательское свойство изображения, необходимо выполнить следующие действия:
Добавьте код к проекту элемента управления.
Стандартный идентификатор страницы свойств изображения, элемент данных типа CPictureHolder, а пользовательское свойство типа LPPICTUREDISP с реализацией получение/набор должен быть добавлен.
Измените ряд функций в классе элемента управления.
Будут произведены следующие изменения в несколько функций, которые отвечают за документа выбранного элемента управления ActiveX.
Добавление в проект элемента управления
Чтобы добавить идентификатор страницы свойств для стандартной страницы свойств изображения, вставьте следующую линию после макроса BEGIN_PROPPAGEIDS в файл реализации элемента управления (.CPP):
PROPPAGEID(CLSID_CPicturePropPage)
Также необходимо увеличить значение параметра count для макроса BEGIN_PROPPAGEIDS на единицу.Это показано в следующей линия.
BEGIN_PROPPAGEIDS(CMyAxPicCtrl, 2)
Чтобы добавить элемент данных CPictureHolder в класс элемента управления вставьте следующую линию под защищенный разделе объявлений класса элемента управления в файл заголовка элемента управления. h):
CPictureHolder m_pic;
Не должен иметь имя элемента данных m_pic; любое имя достаточно.
Далее добавьте пользовательское свойство, которое поддерживает тип изображения.
Добавление пользовательского свойства изображения с помощью мастера добавления свойства
Загрузите проект элемента управления.
В представлении классов разверните узел библиотеки элемента управления.
Щелкните правой кнопкой мыши узел интерфейса элемента управления (второго узла библиотеки), чтобы открыть контекстное меню.
В контекстном меню выберите команду Добавить а затем Добавить свойство.
В окне Имя свойства введите имя свойства.Например, ControlPicture назначения используются в этой процедуре.
В окне Тип свойства выберите 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 и get и set функции пользовательского свойства изображения находятся в файле реализации элемента управления.(Обратите внимание, что в этом примере класс элемента управления вызывает 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);
}
В функции get свойства изображения элемента управления пользовательского добавьте следующую линия.
return m_pic.GetPictureDispatch();
В функции задания свойства изображения элемента управления пользовательского добавьте следующие линии:
m_pic.SetPictureDispatch(pVal);
InvalidateControl();
Свойство изображения необходимо сделать так как сведения упорним, добавленные во время разработки вверх, будет отображаться во время выполнения.Добавьте следующую линию в COleControl- функция DoPropExchange производного типа.
PX_Picture(pPX, _T("ControlPicture"), m_pic);
Примечание |
---|
Собственные имена класса и функции, могут отличаться от примера выше. |
После завершения изменений, перестройте проект включения новых возможностей пользовательского свойства изображения и использовать тестовый контейнер для тестирования новое свойство.Сведения о доступе к тестовому контейнеру см. в разделе Тестирование свойств и событий при помощи тестового контейнера.
См. также
Основные понятия
Элементы управления ActiveX MFC