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


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

Добавьте пользовательское свойство, которое поддерживает тип фигуры.

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

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

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

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

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

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

  6. В поле свойство Type, выберите 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();
}

Примечание

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

Изменения в проект элемента управления

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

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

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