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


Элементы управления 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; любое имя достаточно.

Далее добавьте пользовательское свойство, которое поддерживает тип изображения.

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

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

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

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

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

  5. В окне Имя свойства введите имя свойства.Например, ControlPicture назначения используются в этой процедуре.

  6. В окне Тип свойства выберите IPictureDisp* для типа свойства.

  7. Для Тип реализации, нажмите кнопку Методы Get и Set.

  8. Уникальные имена типов для получают и функциям наборов или принимающих имена по умолчанию.(В этом примере используется GetControlPicture имен по умолчанию и SetControlPicture).

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

Мастер добавления свойства добавить следующий код между комментариями сопоставления диспетчера в заголовке элемента управления. файл 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();
}
ПримечаниеПримечание

Собственные имена класса и функции элементов управления могут отличаться от примера выше.

1exs6wht.collapse_all(ru-ru,VS.110).gifИзменения в проект элемента управления

После того как были сделаны необходимые добавления в проект элемента управления необходимо изменить несколько функций, которые влияют на визуализацию пользовательского элемента управления 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

Элементы управления ActiveX MFC: Использование шрифтов

Элементы управления ActiveX MFC: страницы свойств