Листинг 2.36.

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

//Шрифт для элементов управления

font := CreateFont(16, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET,

OUT_CHARACTER_PRECIS, CLIP_DEFAULT_PRECIS,

DEFAULT_QUALITY, DEFAULT_PITCH, \'Courier new\');

//Создание элементов управления

CreateButton(20, 30, 70, 30, 1001, \'Кнопка 1\');

CreateButton(100, 30, 70, 30, 1002,\'Кнопка 2\');

CreateCheck(210, 30, 180, 20, 2001, \'Флажок 1\');

CreateCheck(210, 60, 180, 20, 2001, \'Флажок 2\', True);

CreateOption(210, 100, 180, 20, 3001, \'Переключатель 1\', True);

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), которая будет вызываться по одному разу для каждого дочернего окна. В нашем примере функцияЕпитРипс имеет следующий вид (листинг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, передается в функцию обратного вызова. В нашем случае этим параметром является дескриптор шрифта.

<p>Глава 3 Мышь и клавиатура</p>

• Мышь

• Клавиатура

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

<p>3.1. Мышь</p>

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

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

Для начала программным путем определим присутствие мыши в системе. Один из способов определения наличия мыши демонстрирует следующий пример (листинг 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.

Перейти на страницу:

Похожие книги