Шаг 2: Обработка событий мыши
На шаге 2 мы внесем изменения в
приложение, чтобы при щелчке любой кнопкой
мыши строка с приветствием перемещалась на
место щелчка На рис. 6.7 можно увидеть, что
после щелчка кнопкой мыши строка
действительно переместилась
Рис. 6.7. Перемещение текста по щелчку кнопкой
мыши (Шаг 2)
//SimpleForm.cpp - Шаг 2
// SimpleForm.срр - 2
// Эта версия отображает
приветствие, которое может быть перемещено
// щелчком кнопки мыши
fusing <mscorlib.dll>
fusing <System.dll>
fusing <System.Drawing dll>
fusing <System.Windows.Forms dll>
using namespace System;
// использование пространства имен
Система;
using namespace System::Windows. Forms;
// использование пространства имен
Система::Windows::Формы;
using namespace System::Drawing;
// использование пространства имен
Система:: Рисунок;
_go class Forml : public Form
// класс сборщика мусора Forml:
общедоступная Форма
{
private: // частный
void InitializeComponent()
{
MouseDown += new MouseEventHandler // новый
обработчик
// события
(this, Forml_MouseDown);
}
float x, у; // с плавающей точкой
Brush *pStdBrush; // Кисть public:
Forml()
{
InitializeComponent(); Size = // Размер
*_nogc new System::Drawing::Size(300,200); // Размер
Text = "Simple Form - Step 2"; // Текст = "Простая
Форма - Шаг 2"; x = у = 10;
pStdBrush = new SolidBrush(Color::Black) ; // Красить::Черным
}
protected- // защищенный void Forml_MouseDown
(Object *pSender, MouseEventArgs *pmea)
{
x = pmea->X; у = pmea->Y;
Invalidate(); I
}
Во время инициализации программа
связывает метод Forml_MouseDown с событием MouseDown (Кнопка
мыши нажата) Этот метод устанавливает
координаты текста, х и у, равными
координатам точки, в которой находился
указатель в момент щелчка Для того чтобы
понять роль метода Invalidate (Считать
недействительным), закомментируйте его и
снова скомпонуйте код Щелкните мышью, чтобы
перенести текст Что произойдет в
результате9 Приветствие останется на том же
месте Потом накройте окно приложения каким-либо
другим окном, а потом снова откройте его
Теперь вы увидите, что строка перемещена
Метод Invalidate (Считать
недействительным) определен в базовом
классе Control (Элемент управления) Существует
несколько переопределенных версий этого
метода Каждая из них заставляет считать
недействительной определенную область
управляющего элемента и посылает элементу
управления сообщение о перерисовывании
Метод, который не содержит параметров,
заставляет считать недействительным весь
управляющий элемент Для того чтобы
максимально уменьшить объем
перерисовывания, в более сложном
приложении можно ограничиться тем, что
недействительным будет считаться
прямоугольник
|