ShowOpen('Все файлы|*.*||'));
end;
1002: //Сохранение файла
begin
SetText(2001, 'Путь для сохранения:' + #13 + #10 +
ShowSave('Все файлы|*.*||'));
end;
1003: //Выбор цвета
begin
curColor := ShowChooseColor(curColor);
Str(curColor, strBuf);
SetText(2001, 'Выбранный цвет:' + #13 + #10 + strBuf);
end;
1004: //Выбор шрифта
begin
if (ShowChooseFont(font) = True) then
begin
//Замена шрифта в Edit
hOldFont := HFONT(
SendDlgItemMessage(hMainWnd,2001,WM_GETFONT, 0,0));
hCurFont := CreateFontIndirect(font);
SendDlgItemMessage(hMainWnd, 2001, WM_SETFONT,
Integer(hCurFont),
Integer(True));
SetText(2001, 'Текст, записанный выбранным
шрифтом');
if (hOldFont <> 0) then DeleteObject(hOldFont);
end;
end;
1010: //Выбор папки
begin
SetText(2001, 'Выбранная папка:' + #13 + #10 +
ShowChooseFolder());
end;
1011: //Подключение сетевого ресурса
begin
ShowConnection();
end;
1012: //Отключение сетевого ресурса
begin
ShowDisconnect();
end;
1013: //Окно «О программе»
begin
ShowAbout('Standart windows',
'Демонстрация использования стандартных ' +
'окон диалога из чистого API-приложения');
end;
end;
end;
else
begin
//Обработка по умолчанию
WindowFunc := DefWindowProc(hWnd, msg, wParam, lParam);
Exit;
end;
end;
WindowFunc := S_OK; //Сообщение обработано
end;
Обработка сообщений здесь довольно проста, за исключением изменения шрифта текстового поля. Обратите внимание на следующий отрывок листинга 2.34:
//Замена шрифта в Edit
hOldFont := HFONT(SendDlgItemMessage(hMainWnd,2001,WM_GETFONT, 0,0));
hCurFont := CreateFontIndirect(font);
SendDlgItemMessage(hMainWnd, 2001, WM_SETFONT,
Integer(hCurFont), Integer(True));
SetEditText(2001, 'Текст, записанный выбранным шрифтом');
if (hOldFont <> 0) then DeleteObject(hOldFont);
Этот довольно объемный фрагмент кода всего лишь заменяет шрифт в текстовом поле. Подобную операцию можно использовать для задания шрифта любого элемента управления. В частности, в приведенных в этой главе примерах текст на кнопках, надписях и т. д. выглядит довольно невзрачно потому, что используется системный шрифт, установленный по умолчанию.
Способ, которым можно установить шрифт всех элементов управления окна, показан далее. Теперь еще один существенный момент: не забывайте удалять объекты GDI (в данном случае – шрифт) после того, как они стали не нужны. Дело в том, что приложение может владеть не более чем 65 000 объектов GDI. И при наличии так называемой «утечки» ресурсов GDI может наступить момент (при продолжительной работе программы), когда вдруг окна приложения начинают отрисовываться по меньшей мере странно (если вообще отрисовываются).