Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

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:

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

<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS