Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

pragma once Hard / Занятие 9

.doc
Скачиваний:
14
Добавлен:
13.03.2015
Размер:
78.85 Кб
Скачать

Обработка событий мыши

События мыши

Click

Происходит при щелчке элемента управления. Может создаваться не только мышью, но и другими действиями, такими как нажатие клавиши ВВОД, когда фокус находится в элементе управления.

MouseClick

Происходит при щелчке элемента управления мышью.

DoubleClick

Происходит, когда элемент управления дважды щелкается. Может вызываться другими действиями пользователя, например нажатием сочетания клавиш.

MouseDoubleClick

Происходит, когда пользователь быстро дважды нажимает кнопку мыши, когда курсор находится на элементе управления.

MouseDown

Происходит при нажатии кнопки мыши, если указатель мыши находится на элементе управления.

MouseUp

Происходит при отпускании кнопки мыши, если указатель мыши находится на элементе управления.

MouseEnter

Происходит, когда указатель мыши оказывается на элементе управления.

MouseHover

Происходит, когда указатель мыши задерживается на элементе управления.

MouseLeave

Происходит, когда указатель мыши покидает элемент управления.

MouseMove

Происходит при перемещении указателя мыши по элементу управления.

MouseWheel

Происходит при движении колесика мыши, если элемент управления имеет фокус.

Свойства аргумента e

Button

Получает значение, показывающее, какая кнопка мыши была нажата.

Clicks

Получает число нажатий и отпусканий кнопки мыши.

Delta

Получает число со знаком, указывающее количество делений, на которое повернулось колесико мыши. Делением называется один зубец колесика мыши.

Location

Получает расположение указателя мыши на момент создания события.

X

Получает координату x указателя мыши на момент создания события.

Y

Получает координату y указателя мыши на момент создания события.

Перечисление MouseButtons (возможные значения свойства Button)

Left

Была нажата левая кнопка мыши.

None

Никакая кнопка мыши не была нажата.

Right

Была нажата правая кнопка мыши.

Middle

Была нажата средняя кнопка мыши.

XButton1

Была нажата первая кнопка XButton.

XButton2

Была нажата вторая кнопка XButton.

События мыши происходят в следующем порядке:

  1. MouseEnter

  2. MouseMove

  3. MouseHover / MouseDown / MouseWheel

  4. MouseUp

  5. MouseLeave

Пример 1

Создайте форму следующего вида: на ней расположено 8 элементов label. Цвет фона элементов label изменен на «белый», чтобы четко были видны границы элемента.

Обработчики событий:

private: System::Void Form1_MouseClick(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {

switch ( e->Button ){

case System::Windows::Forms::MouseButtons::Left:

label1->Text = "Button: "+ L"Левая";

break;

case System::Windows::Forms::MouseButtons::Right:

label1->Text = "Button: "+ L"Правая";

break;

case System::Windows::Forms::MouseButtons::None:

label1->Text = "Button: "+ L"Не нажата";

break;

case System::Windows::Forms::MouseButtons::Middle :

label1->Text = "Button: "+ L"Средняя";

break;

}

//label1->Text= "Button: "+ Convert::ToString(e->Button);

label2->Text="Clicks: "+Convert::ToString(e->Clicks);

label3->Text="Delta: "+Convert::ToString(e->Delta);

label4->Text="Location: "+Convert::ToString(e->Location);

label5->Text="X: "+Convert::ToString(e->X);

label6->Text="Y: "+Convert::ToString(e->Y);

//положение мыши относительно левого верхнего угла монитора

label7->Text="MousePosition.X: "+Convert::ToString(this->MousePosition.X);

label8->Text="MousePosition.Y: "+Convert::ToString(this->MousePosition.Y);

}

private: System::Void Form1_MouseEnter(System::Object^ sender, System::EventArgs^ e) {

this->BackColor=Color::Aqua;

}

private: System::Void Form1_MouseLeave(System::Object^ sender, System::EventArgs^ e) {

this->BackColor=Color::Gray;

}

Обработка событий клавиатуры

События клавиатуры

KeyDown

Возникает при нажатии клавиши на клавиатуре. Происходит один раз

KeyPress

Возникает при нажатии клавиши или клавиш, которое привело к вводу знака. Например, пользователь нажимает клавишу SHIFT и клавишу буквы "a" нижнего регистра, что приводит к вводу знака прописной буквы "A".. Может возникать несколько раз, когда пользователь удерживает нажатую клавишу

KeyUp

Возникает один раз после того, как пользователь отпускает клавишу

Пример 2

Создайте форму следующего вида: на ней расположено 2 элемента label.

Обработчики событий:

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {

label1->Text=String::Empty;

label2->Text=String::Empty;

}

private: System::Void Form1_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {

label1->Text="Нажата клавиша: " + e->KeyChar;

}

private: System::Void Form1_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) {

label2->Text=String::Empty;

//есди нажата Alt

if(e->Alt==true) label2->Text += "Alt: Yes\n";

else label2->Text += "Alt: No\n";

//есди нажата Shift

if(e->Shift==true) label2->Text += "Shift: Yes\n";

else label2->Text += "Shift: No\n";

//есди нажата Ctrl

if(e->Control==true) label2->Text += "Ctrl: Yes\n";

else label2->Text += "Ctrl: No\n";

label2->Text += "KeyCode: " + Convert::ToString(e->KeyCode) + "\n";

label2->Text += "KeyData: " + Convert::ToString(e->KeyData) + "\n";

label2->Text += "KeyValue: " + Convert::ToString(e->KeyValue) + "\n";

}

private: System::Void Form1_KeyUp(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) {

label1->Text=String::Empty;

label2->Text=String::Empty;

}

Соседние файлы в папке pragma once Hard