Шаг 6 - Реакция на события

То что свойства есть это хорошо !!! Но вот теперь как заставить реагировать элемент на события. Это тоже просто, давайте в ответ на шелчок на нем мышкой сделаем вывод сообщения.

Открывайте наш проект. Опять View->ClassWizard. И переходит на вкладку ActiveX Events (события элемента). Обработка событий происходит в классе CDMyActive1Ctrl. Убедитесь, что он виден в окне ClassName. Теперь нам надо нажать на кнопку Add Event. В поле External name из выпадающего списка выбрать Click и нажать OK. И еще раз OK для закрытия диалогового окна.

Что произошло ? Посмотрите в ClassView - DDMyActive1Events, там добавилось Click.

6_1.gif (2376 b)

Теперь при шелчке на элементе поступит уведомление. Но нам надо обрабатывать это сообщение. Обработка должна быть сгенерирована в классе CDMyActive1Ctrl. Запускате ClassWizard, но выберите MessageMap. Убедитесь, что в окне Class name наш Ctrl класс. Найдите в окне Messages сообщение WM_LBUTTONDOWN. Щелкните по нему два раза. Оно должно стать черным, что говорит о его использовании. После этого выбирите Edit code и Вы попадете в место его нахождения.

Что произошло в CDMyActive1Ctrl ? Появилось описание карты сообщения в описании класса

....
// Message maps
  //{{AFX_MSG(CDMyActive1Ctrl)
  afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  //}}AFX_MSG
  DECLARE_MESSAGE_MAP()
.....

И функция в файле реализации.

void CDMyActive1Ctrl::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	COleControl::OnLButtonDown(nFlags, point);
}

Изменим код:

void CDMyActive1Ctrl::OnLButtonDown(UINT nFlags, CPoint point) 
{
	AfxMessageBox("Click");
	COleControl::OnLButtonDown(nFlags, point);
}

Чтож, компилируем и запускаем наш макрос из VBA. Теперь куда бы Вы не нажали в диалоговой панели элемент ActiveX всё равно реагирует. Это плохо. Но с этим можно бороться :-) Там передаются параметры. Главное он реагирует на события из вне. Кстати когда вам это надоест нажмите Ctrl-Break и выполнение макроса прервется.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 05.01.2000