C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Урок 12. Добавление стандартного свойства / ActiveX / Приложение

Visual C++. ActiveX
Урок 12. Добавление стандартного свойства

На этом уроке мы с вами добавим стандартное свойство для нашего элемента ActiveX, а именно - свойство для задания цвета нашего эллипса.

Для добавления стандартного свойства проделайте следующие действия. Включите ClassWizard и перейдите в нем на вкладку Automation. Выберите в combobox'е Class name класс CFirstAXCtrl. Нажмите на кнопку Add Property. В появившемся окне Add Property заполните данные следующим образом: External name - ForeColor, в группе радиокнопок Implementation выберите Stock (т. е. встроенное свойство):

Окно Add Property

Обратите внимание на снегерированные названия Get- и Set-функций - GetForeColor и SetForeColor (они нам пригодятся чуть позже). Нажмите на OK для закрытия диалогового окна и еще раз на OK в окне ClassWizard'а для закрытия его.

Компилируйте наш элемент ActiveX.

Теперь в тестовом проекте появится стандартное свойство ForeColor. Вот так оно будет выглядеть в VB:

Свойство ForeColor в VB

А вот как в тестовом проекте в Visual C++:

Свойство ForeColor в VC++

Теперь давайте сделаем так, чтобы при изменении этого свойства менялся цвет у нашего эллипса. Для этого измените метод OnDraw следующим образом:

void CFirstAXCtrl::OnDraw(
            CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
    // TODO: Replace the following code with your own drawing code.
    pdc->FillRect(rcBounds,
      CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
    COLORREF fColor = TranslateColor(GetForeColor());
    CBrush br; //Заводим кисть
    br.CreateSolidBrush(fColor); //Создаем кисть цвета fColor
    //Приписываем кисть к контексту устройства
    pdc->SelectObject(&br);
    pdc->Ellipse(rcBounds); //Рисуем эллипс
}

Обсудим строчку (смысл остальных строк более-менее ясен из комментариев)

    ...
    COLORREF fColor = TranslateColor(GetForeColor());
    ...

Здесь мы вызываем метод GetForeColor(). Его нет на вкладке ClassView, но, тем не менее, он все равно присутствует и его можно использовать. Помните, когда мы задавали встроенное свойство ForeColor, то в диалоговом окне Add Property появилось два метода - GetForeColor и SetForeColor (см. первую картинку в этом уроке). Метод GetForeColor возвращает цвет, но типа OLE_COLOR, а нам надо типа COLORREF. Для перевода мы и использум функцию TranslateColor. К методу GetForeColor есть парный SetForeColor. С его помощью можно задавать цвет (свойство ForeColor).

Компилируем проект и испытываем его в тестовой программе. Цвет у эллипса будет меняться при изменении свойства ForeColor:

Изменение цвета