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

ВИДЕОКУРС ВЗЛОМ
выпущен 28 января!


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

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



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

Visual C++.NET. Библиотека ATL
Урок 6. Добавление события

На этом занятии мы будем развивать наш компонент дальше - а именно к нему будет добавлено событие MyEvent. Это событие будет происходить тогда, когда свойство num для нашего компонента будет равно 3. Т. е. как только num окажется равным 3, наш компонент известит контейнер, на котором он будет расположен (например, форму Visual Basic), о возникновении этого события. А уж обратит ли внимание контейнер на это событие или не обратит - это дело самого контейнера (вернее, программиста, который будет использовать наш компоннент). В нашем примере в обрабитчике события на форме VB мы просто покажем обычный messagebox.

Для добавления события щелкните на интерфейсе _MyFirstATLEvents правой кнопкой мыши и в контекстном меню выберите Add и затем "Add Method...":

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

В качестве типа возвращаемого значения выберите void и в качестве имени наберите MyEvent:

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

Нажмите на кнопку Finish для закрытия диалогового окна.

Обратите внимание, что у интерфейса _MyFirstATLEvents пояился метод MyEvent:

Изменения в интерфейсе

Также обратите внимание, что в классе CMyFirstATL появилось событие MyEvent:

Событие MyEvent в классе CMyFirstATL

Теперь надо написать код для вызова этого события. Оно должно произойти, если свойство num станет равным 3, поэтому вносим следующие добавления в код для метода put_num:

STDMETHODIMP CMyFirstATL::put_num(SHORT newVal)
 
 {
 
     // TODO: Add your implementation code here
 
     m_nNum=newVal;
 
     if(m_nNum==3){
 
         MyEvent();
 
     }
 
     return S_OK;
 
 }

Как вы видите, тут мы просто вызываем метод MyEvent в случае, если переменная m_nNum стала в результате установки свойства num равным 3.

Компилируем проект (Ctrl+Shift+B) (Возможно, что для этого придется закрыть тествый проект VB.NET).

Смотрим, что у нас новенького в тестовом VB-проекте. Ага, наше событие появилось у компонента:

Событие MyEvent в тестовойм проекте

Пишем для него обработчик (для этого достаточно сделать на компоненте двойной щелчок):

    ...
 
     Private Sub AxCMyFirstATL1_MyEvent(ByVal sender As System.Object, _
 
     ByVal e As System.EventArgs) Handles AxCMyFirstATL1.MyEvent
 
         MsgBox("Событие MyEvent")
 
     End Sub
 
     ...

Как видно, в обработчике мы просто вызываем messagebox.

Внесите также изменения в обработчик для кнопки:

    Private Sub Button1_Click(ByVal sender As System.Object, _
 
     ByVal e As System.EventArgs) Handles Button1.Click
 
         AxCMyFirstATL1.num += 1
 
     End Sub

При щелчке на кнопке мы просто увеличивем значение свойства num на 1.

Запускаем тестовый VB-проект. После третьего щелчка на кнопке должен возникнуть messagebox с надписью "Событие MyEvent".



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

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




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



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


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