Оценить:
 Рейтинг: 4.6

Программирование в Delphi. Трюки и эффекты

Год написания книги
2010
Теги
<< 1 ... 32 33 34 35 36 37 38 39 40 ... 42 >>
На страницу:
36 из 42
Настройки чтения
Размер шрифта
Высота строк
Поля

CreateOption(210, 130, 180, 20, 3002, 'Переключатель 2', False, True);

CreateOption(210, 160, 180, 20, 3003, 'Переключатель 3', True);

//Установка шрифта элементов управления

EnumChildWindows(hMainWnd, Addr(EnumFunc), font);

//Запуск цикла обработки сообщений

while (Longint(GetMessage(mess, 0, 0, 0)) <> 0)

do begin

TranslateMessage(mess);

DispatchMessage(mess);

end;

DeleteObject(font);

Собственно, за установление шрифта отвечает в приведенном листинге только одна строка:

EnumChildWindows(hMainWnd, Addr(EnumFunc), font);

При этом также нужно определить функцию обратного вызова (в данном случае это функция 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;
<< 1 ... 32 33 34 35 36 37 38 39 40 ... 42 >>
На страницу:
36 из 42

Другие электронные книги автора Александр Анатольевич Чиртик