Размер шрифта
-
+

Delphi. Трюки и эффекты - стр. 42

Листинг 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).

Листинг 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 типа ТPoint, мы получим текущие экранные координаты указателя.

Страница 42