VB 17. Дополнительные функции

*
Задание: Создайте шуточное приложение, которое не разрешает пользователю щелкнуть по кнопке.

Выполнение:

  1. Создайте новый проект. Поместите на новую форму кнопку Щелкни по мне! Как показано на рисунке (рис. 17.1).
координаты курсора мыши vb
Рис. 17.1. Форма «Щелкни по мне»
  1. Добавьте в модуль формы описание следующих API функций:
Public Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As Point) As Integer
 
Public Declare Function SetCursorPos Lib "user32" (ByVal X As Integer, ByVal Y As Integer) As Integer

GetСursorСos – считывает текущую позицию курсора,

SetCursorPos – устанавливает курсор в указанную позицию,

  1. Измените заголовок формы и ее иконку, для этого задайте изображение для свойства Icon формы (выберите подходящую иконку в памяти компьютера).
  2. Теперь необходимо, чтобы, как только курсор мыши оказывался над кнопкой, то сразу перемещался и не давал пользователю возможности щелкнуть по ней; к примеру, перемещался бы в произвольное место экрана. Для этого подходит событие кнопки MouseMove, которое генерируется, когда курсор мыши перемещается по кнопке. Запрограммируйте его следующим образом:
SetCursorPos(Rnd() * Me.Height, Rnd() * Me.Width)

Курсор будет установлен в произвольном месте по ширине и высоте формы, но не кнопки.

  1. Запустите и отладьте приложение. По кнопке невозможно щелкнуть, и вроде бы мы добились результата, но иногда в случае, когда курсор перемещается к границе экрана, пользователь может зрительно потерять курсор. Поэтому для того, чтобы еще больше запутать пользователя, нужно, чтобы курсор перемещался на небольшое расстояние от кнопки. Для этого необходимо посчитать текущую позицию курсора, а затем увеличить или уменьшить ее на небольшое число, к примеру, на 80, как показано в следующем фрагменте кода:
Dim Курсор As Point
GetCursorPos(Курсор)
Курсор.X = Курсор.X + Rnd() * 160 - 80
Курсор.Y = Курсор.Y + Rnd() * 160 - 80
SetCursorPos(Курсор.X, Курсор.Y)
  1. Добавим к приложению сообщение, которое будет выводиться, когда пользователь будет пытаться закрыть его. Для этого в событие FormClosing формы необходимо вставить следующий код:
MsgBox("Да, забыл Вас предупредить, что если Вам не удастся щелкнуть по кнопке, то Вы отдаете 100$ мне!")
  1. Запустите и отладьте приложение. Сохраните его.
Дополнительное задание:

Измените приложение так, чтобы не курсор мыши убегал от кнопки, а кнопка «отскакивала» от курсора мыши.

Button1.Location = New System.Drawing.Point(курсор.X / 2, курсор.Y)
Вопросы для самоконтроля:

  1. С помощью какого свойства формы можно изменить ее иконку?
  2. Какая функция устанавливает курсор мыши в необходимую позицию?
  3. С помощью какой функции можно узнать текущую позицию курсора?

* При использовании материалов обязательна ссылка на источник: Майер С.Ф., «MS Visual Basic 2008» — Учебно-методическое пособие : Южный федеральный университет. – Ростов-на-Дону, 2017. – 92 с.