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

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


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

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



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

Visual C++. ActiveX
Урок 6. Добавляем событие

Для начала пара слов, что такое событие (event). ActiveX-элементы не могут существовать сами по себе. Они обязательно существуют в некотором контейнере (например, на форме). ActiveX-элемент может уведомлять форму, что с ним что-то произошло. Так вот, такие уведомления и называются события. Типичный пример события - это Click для кнопки. Когда на кнопке щелкают, то она говорит своему контейнеру "На мне щелкнули!". Если у контейнера есть обработчик для этого события, то контейнер что-то делает, как-то обращает внимание на этот щелчок. Если обработчика нет, то ничего и не происходит. Обратите внимание, что обработчик находится в контейнере, а не в ActiveX-элементе. И программист, использующий этот ActiveX, может написать в обработчике все, что захочет (или вообще ничего не писать).

Для добавления события вызываем ClassWizard (Ctrl+W) и переходим на вкладку ActiveX Events:

Вкладка ActiveX Events

Далее в правой части окна ClassWizard'а нажимаем на кнопку Add Event. Появляется окно Add Event. Заполните его поля следующим образом:

Окно Add Event

External name - это внешнее имя для нашего события (это имя будет видно снаружи, например, при использовании ActiveX'а в некотором проекте). Internal name - это внутреннее имя. Образуется оно так - Fire плюс имя события. У нас это FireMyEvent. Это имя используется для порождения (fire) этого события нашим элементом ActiveX. То есть в том месте кода, в котором мы хотим чтобы наш ActiveX-элемент известил свой контейнер об этом событии, мы должны написать

...
 
 FireMyEvent();
 
 ...

Пишеться это, естественно, в коде элемента ActiveX.

Нажимаем OK для закрытия окна Add Event и еще раз OK для закрытия ClassWizard.

Обратите внимание на изменения на вкладке ClassView. К интерфесу прибавилось событие MyEvent:

Событие MyEvent

И в класса CFirstAXCtrl прибавился метод для полождения события FireMyEvent():

Метод FireMyEvent()

Теперь добавим код, вызывающий наше событие. Давайте сделаем так, чтобы наше событие вызывалось при щелчке мышкой на нашем ActiveX-элементе. Для этого стандартным способом (например, с помощью ClassWizard'а) добавьте обработчик для сообщения WM_LBUTONUP и измените его следующим образом:

void CFirstAXCtrl::OnLButtonUp(UINT nFlags, CPoint point)
 
 {
 
     // TODO: Add your message handler code here and/or call default
 
     FireMyEvent();//Вызываем наше событие
 
     COleControl::OnLButtonUp(nFlags, point);
 
 }

Теперь при щелчке левой кнопкой мыши наш ActiveX пошлет своему контейнеру (например, форме) событие MyEvent. А уж контейнер как-то это событие обработает.

Откомпилируйте наш элемент ActiveX (F7). В последующих уроках мы проверим его работу в VB и VC++.



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

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




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



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


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