Шаг 2: Обработка событий мыши. Шаг 2М: Несколько обработчиков для события.
Во время инициализации программа связывает метод Forml_MouseDown с событием MouseDown (Кнопка мыши нажата). Этот метод устанавливает координаты текста, х и у, равными координатам точки, в которой находился указатель в момент щелчка. Для того чтобы понять роль метода Invalidate (Считать недействительным), закомментируйте его и снова скомпонуйте код. Щелкните мышью, чтобы перенести текст. Что произойдет в результате? Приветствие останется на том же месте. Потом накройте окно приложения каким-либо другим окном, а потом снова откройте его. Теперь вы увидите, что строка перемещена.
Метод Invalidate (Считать недействительным) определен в базовом классе Control (Элемент управления). Существует несколько переопределенных версий этого метода. Каждая из них заставляет считать недействительной определенную область управляющего элемента и посылает элементу управления сообщение о перерисовывании. Метод, который не содержит параметров, заставляет считать недействительным весь управляющий элемент. Для того чтобы максимально уменьшить объем перерисовывания, в более сложном приложении можно ограничиться тем, что недействительным будет считаться прямоугольник.
Шаг 2М: Несколько обработчиков для события
На шаге 2М создания нашего приложения мы реализуем два разных обработчика события MouseDown (Кнопка мыши нажата). Второй обработчик по щелчку кнопкой мыши просто отображает окно сообщения.
//SimpleForm.срр – Шаг 2М // Эта версия имеет два обработчика событий для MouseDown _gc class Forml: public Form // класс сборщика мусора Forml: общедоступная Форма { private: // частный void InitializeComponent() { MouseDown += new MouseEventHandler (this, Forml__MouseDown); MouseDown += new MouseEventHandler (this, ShowClick); } void Forml_MouseDown (Object *pSender, MouseEventArgs *pmea) { x = pmea › X; у = pmea › Y; Invalidate(); } void ShowClick (Object *pSender, MouseEventArgs *pmea) { MessageBox::Show("Mouse clicked!!'"); // "Мышь щелкнула!!! }