|
Программирование >> Автоматически обновляемые приложения
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 на прилагаемом диске.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |