Программирование в Delphi. Трюки и эффекты. Александр Чиртик

Читать онлайн.
Название Программирование в Delphi. Трюки и эффекты
Автор произведения Александр Чиртик
Жанр Программирование
Серия
Издательство Программирование
Год выпуска 2010
isbn 978-5-49807-118-3



Скачать книгу

WM_SETFONT, WPARAM(param), LPARAM(True));

      EnumFunc:= True; //Продолжать перечисление

      end;

      В принципе, имя этой функции и названия параметров могут быть любыми, а вот типы параметров, возвращаемого значения и способ вызова функции должны быть именно такими, какие представлены в листинге 2.37. Функция должна возвращать True, если нужно продолжать перечисление окон, и False – в противном случае. Значение, которое было передано в качестве третьего параметра API-функции EnumChildWindows, передается в функцию обратного вызова. В данном случае этим параметром является дескриптор шрифта.

      Глава 3

      Мышь и клавиатура

      • Мышь

      • Клавиатура

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

      Мышь

      Кто из нас не пользовался мышью? Это незамысловатое устройство помогает быстро, а главное просто работать с программами. Начнем с простых операций с мышью. Научимся определять координаты, а также программно перемещать и делать невидимым указатель мыши. Кроме того, вы узнаете, как «захватить» указатель мыши, ограничить область его перемещения и вычислить расстояние, проходимое указателем мыши на экране монитора.

      Координаты и указатель мыши

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

Листинг 3.1. Определение присутствия в системе мыши

      function MousePresent: Boolean;

      begin

      //С помощью вызова GetSystemMetrics определяем наличие мыши в системе

      if GetSystemMetrics(SM_MOUSEPRESENT) <> 0 then

      Result:= True

      else

      Result:= False;

      end;

      Описанная выше функция MousePresent позволяет проверить наличие мыши. Если мышь подключена к компьютеру и ее можно использовать, то MousePresent возвращает значение True, в противном случае – False.

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

Листинг 3.2. Определение координат указателя мыши

      procedure MouseForm.Button1Click(Sender: TObject);

      var

      pt: TPoint;

      begin

      //Получаем координаты указателя мыши

      GetCursorPos(pt);

      ShowMessage('('+ IntToStr(pt.X) + ','+ IntToStr(pt.Y) +')');

      end;

      Здесь для определения координат указателя мыши использовалась API-функция GetCursorPos. Передав в эту функцию переменную pt типа TPoint, вы получите текущие координаты указателя мыши на экране монитора.

      В следующем примере демонстрируется, как программным путем скрыть указатель мыши. При нажатии кнопки Button2 указатель будет исчезать, а при нажатии кнопки Button3 (например, с помощью клавиатуры) – появляться (листинг 3.3).

Листинг 3.3. Скрытие указателя мыши

      procedure MouseForm.Button2Click(Sender: TObject);

      begin

      //Прячем указатель

      ShowCursor(False);

      end;

      procedure MouseForm.Button3Click(Sender: TObject);

      begin

      //Показываем указатель

      ShowCursor(True);

      end;

      В