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 руб./мес


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




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

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".