Листинг 2.35.
Установка шрифта по ходу создания элементов управления
//Шрифт для элементов управления
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\');
//Создание элементов управления
ctrl := CreateButton(20, 30, 70, 30, 1001, \'Кнопка 1\');
SendMessage(ctrl, WM_SETFONT, HFONT(font), 1);
ctrl := CreateButton(100, 30, 70, 30, 1002,\'Кнопка 2\');
SendMessage(ctrl, WM_SETFONT, HFONT(font), 1);
ctrl := CreateCheck(210, 30, 180, 20, 2001, \'Флажок 1\');
SendMessage(ctrl, WM_SETFONT, HFONT(font), 1);
ctrl := CreateCheck(210, 60, 180, 20, 2001, \'Флажок 2\', True);
SendMessage(ctrl, WM_SETFONT, HFONT(font), 1);
ctrl := CreateOption(210, 100, 180, 20, 3001, \'Переключатель 1\',
True);
SendMessage(ctrl, WM_SETFONT, HFONT(font), 1);
ctrl := CreateOption(210,130,180,20,3002, \'Переключатель 2\',
False, True);
SendMessage(ctrl, WM_SETFONT, HFONT(font), 1);
ctrl := CreateOption(210, 160, 180, 20, 3003, \'Переключатель 3\',
True);
SendMessage(ctrl, WM_SETFONT, HFONT(font), 1);
//Запуск цикла обработки сообщений
while (Longint(GetMessage(mess, 0, 0, 0)) <> 0)
do begin
TranslateMessage(mess);
DispatchMessage(mess);
end;
//Удаление шрифта
DeleteObject(font);
Выглядит окно с элементами управления, шрифт которых установлен любым из рассмотренных способов, так, как показано на рис. 2.9.
Рис. 2.9. Шрифт элементов управления, отличный от системного
Способ задания шрифта, приведенный в листинге 2.35, легко реализовать. Его существенным недостатком является двукратное увеличение количества строк кода, выполняющих создание элементов управления. Для окон, содержащих большое количество элементов управления, можно предложить более универсальный способ (листинг 2.36).