Программирование >>  Автоматически обновляемые приложения 

1 ... 80 81 82 [ 83 ] 84 85 86 ... 170


private void butTestMouse MouseLeave(object sender, EventArgs e) {

Выводим курсор, когда он выходит за пределы кнопки Cursor.Show();

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

Как установить

позицию указателя мыши?

Свойство Cursor.Position НС ТОЛЬКО возвращает позицию указателя мыши, но и задает ее координаты. Поэтому с помощью данного свойства можно перемещать указатель в любую точку экрана. Необходимо помнить, что объект Point, используемый в этом свойстве, содержит экранные координаты. Например, чтобы переместить курсор мыши на 30 точек вниз, используйте код из листинга 8.2.

Листинг 8.2. Устанавливаем новую позицию курсора

Point pt = Cursor.Position;

pt.Y += 30;

Cursor.Position = pt;

Чтобы убедиться, что код работает, проделайте следующее. Поместите указатель мыши приблизительно в центре экрана и нажмите на клавишу пробела или ввода (<Enter>). Так как на форме у нас присутствует только одна кнопка, то она автоматически получит фокус и, следовательно, после нажатия на указанные клавиши выполнится код обработчика нажатия кнопки. Можете самостоятельно усложнить пример- добавьте в проект таймер и заставьте курсор беспорядочно бегать по экрану, используя случайные числа. Только не забудьте предусмотреть возможность закрытия программы, а то сумасшедший курсор не позволит вам.нажать на крестик в правом углу приложения!

Cursor.Hide();



Листинг 8.3. Использование анимированного курсора

[Dlllmport( user32.dll , EntryPoint = LoadCursorFromFileW , CharSet = CharSet.Unicode)]

public static extern IntPtr LoadCursorFromFile(String fileName);

private void buttonl Click(object sender, EventArgs e) {

string fileName = @ D:\archive\cursors\cat-h.ani ; загружаем курсор- из файла

IntPtr hCursor = LoadCursorFromFile(fileName);

устанавливаем его в качестве текущего курсора формы

this.Cursor = new Cursor(hCursor);

Примечание

Пример работы с анимированным курсором находится в папке Animated-Cursors на прилагаемом диске.

Мышеловка

Если у вас есть кот, который отказывается ловить мышей, то соорудим виртуальную мышеловку, которая будет ловить ваш указатель мыши. Пусть ваш кот учится на наглядных примерах. Добавим на форму элемент Label и изменим его цвет, чтобы он не сливался с формой и был хорошо виден нам. У класса Cursor имеется свойство Clip, которое возвращает или задает границы, представляющие прямоугольник отсечения для курсора. Мы воспользуемся этим свойством и в качестве прямоугольника отсечения зададим поверхность надписи Label, как показано в листинге 8.4.

I Листинг 8.4. Создание мышеловки для курсора

Анимированные курсоры

в составе .NET Framework нет класса, позволяющего работать с анимированными курсорами AN1. Поэтому воспользуемся (листинг 8.3) вызовом функции Windows API LoadCursorFromFile.



Право выбора

Продолжим опыты с мышью. Мы знаем, что можем устанавливать указатель мыши в любую позицию программным путем. Используя данную особенность, создадим интересный эффект, когда у пользователя не будет возможности щелкнуть на кнопке. Поместим на форме две кнопки с надписями Да и Нет, а также разместим какой-нибудь пояснительный текст с вопросом. Предположим, это будет вопрос Вы хотите посетить сайт http: rusproject.narod.ru?. Естественно, мне, как автору сайта, не хотелось бы, чтобы пользователь выбирал отрицательный вариант. Когда пользователь попытается подвести курсор мыши к кнопке с надписью Нет, его сразу отбросит на кнопку Да. В листинге 8.5 показано, как это реализуется в коде.

Р -------ГТ-Г--Т----..............................................

I Листин9.!5* ЛриУдиГельное перемеичение УРсора

Чтобы освободить мышь из мышеловки,

используйте комбинацию клавиш <Ctrl>+<Alt>+<Del>

Cursor.Clip = RectangleToScreen(new Rectangle(IblTrapMouse.Location,

IblTrapMouse.Size)); IblTrapMouse.Text = Попался, который кусался! ;

Запустите проект и поместите указатель мыши в закрашенную область. Зря вы это сделали! Ваша мышка попалась в мышеловку. Попробуйте переместить мышь за пределы этой области. У вас ничего не получится. Вы даже можете нажать на кнопку из предыдущего примера, который перемещает курсор мыши вниз. Указатель мыши переместится вниз, но только в том случае, если он не выйдет за пределы ограничивающего прямоугольника. Вы можете переключиться на другие приложения при помощи комбинации клавиш <Alt>+<Tab>, но мышь по-прежнему будет оставаться в ловушке. Чтобы выйти из нее, вам нужно нажать комбинацию клавиш <Ctrl>+<Alt>+<Del>. Вы это теперь знаете, а знает ли это пользователь, которому вы подсунете эту программку?

Примечание

Пример работы с мышью находится в папке SimpleMouse на прилагаемом диске.



1 ... 80 81 82 [ 83 ] 84 85 86 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика