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

Чтение книги онлайн.

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

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

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

этом также нужно определить функцию обратного вызова (в данном случае это функция EnumFunc), которая будет вызываться по одному разу для каждого дочернего окна. В данном примере функция EnumFunc имеет следующий вид (листинг 2.37).

Листинг 2.37. Реализация функции EnumFunc

      function EnumFunc(wnd: HWND; param: LPARAM): BOOL; stdcall;

      begin

      SendMessage(wnd, 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, вы получите текущие координаты

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