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

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июля!


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

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



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

Visual C++. ATL
Урок 7. Добавляем событие для элемента ActiveX

В этом уроке мы с вами посмотрим, как можно добавить событие к нашему элементу ActiveX.

Для добавления событий используется отдельный интерфейс. У нас он назван _IFirstATLEvents (у вас он может иметь и другое имя - в зависимости от того, как вы назвали ваш ActiveX. Но в любом случае его имя должно оканчиваться на *Events). Щелкните на нем правой кнопкой мыши и в контекстном меню выберите Add Method:

Добавление события

В появившемся диалоговом окне Add Method to Interface установите Return Type как void и Method Name в Three:

Добавление события

Нажмите на OK для закрытия диалогового окна. Наше новое событие добавится в интерфейс _IFirstATLEvents:

Новое события

Теперь нам надо это событие откуда-то возбуждать (fire по-английски). Последовательность действий здесь следующая - сначала мы должны откомпилировать наш ActiveX (это важно, так как нам понадобится один из файлов, получаемых в результате компиляции!). Для этого нажимаем на F7 или на кнопку:

Кнопка компиляции

Ошибок быть не должно. Если они все же есть, то исправьте их. После компиляции щелкаем на классе правой кнопкой мыши и выбираем в контекстном меню Implement Connection Point (это те самые точки соединения, которые мы сделали в уроке 3):

Добаление вызова события

В появившемся окне Implement Connection Point ставим галочку у интерфейса _IFirstATLEvents:

Окно Implement Connection Point

Нажимаем OK для закрытия диалогового окна. Обратите внимание, что на вкладке ClassView появился новый класс CProxy_IFirstATLEvents, а внутри его - метод Fire_Three:

Класс CProxy_IFirstATLEvents

Этот класс является представителем (Proxy) для нашего класса CFirstATL.

Теперь изменим метод inc класса CFirstATL так, чтобы событие Three возникало тогда, когда значение свойства num станет равным 3:

STDMETHODIMP CFirstATL::inc()
 
 {
 
     // TODO: Add your implementation code here
 
     m_num++;
 
     if(m_num==3)
 
         Fire_Three();
 
     return S_OK;
 
 }

Все! Теперь у нашего элемента ActiveX есть событие.



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

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




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



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


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