Окт 16

Шаблонная система единиц

В описании шаблона диалогового окна применяется специальная шаблонная система единиц. Размеры и расположение диалогового окна, задаваемые в параметрах х, у, width, height, а также всех элементов управления должны быть указаны в единицах этой системы, называемых также шаблонными единицами (dialog template units).
Шаблонные единицы определяются отдельно по горизонтали и по вертикали через ширину и высоту используемого в диалоговом окне шрифта. Одна шаблонная единица по горизонтали составляет четверть средней ширины символов используемого шрифта. Одна шаблонная единица по вертикали составляет восьмую часть высоты символов.
По умолчанию в диалоговом окне используется системный шрифт. Поскольку высота символов системного шрифта примерно вдвое больше его ширины, то размеры делений по осям Хи Yпримерно одинаковы.
Среднюю ширину и высоту символов для системного шрифта можно определить с помощью функции GetDialogBaseUnits. Она возвращает 32-разрядное значение, младшее слово которого равно средней ширине символов в пикселах (baseunitX), а старшее слово — высоте символов в пикселах (baseunitY). Таким образом, для пересчета шаблонных единиц templateunitX, templateunitY в пикселы можно воспользоваться следующими выражениями:
pixelX = templateunitX baseunitX / 4; pixelY = templateunitY baseunitY / 8;
Подобная система единиц измерения позволяет операционной системе правильно масштабировать диалоговое окно независимо от размера шрифта, установленного в настройках экрана.
По умолчанию Windows использует «мелкий шрифт» (96 точек на дюйм). В этом режиме функция GetDialogBaseUnits возвращает значения baseunitX = 8, baseunitY = 16.
Но пользователь может выбрать более крупный шрифт. Для смены шрифта нужно щелкнуть правой кнопкой мыши на поверхности рабочего стола и в появившемся диалоговом окне Свойства: Экран нажать кнопку Дополнительно..., а затем в окне Свойства перейти на вкладку Общие. Комбинированный список Размер шрифта позволяет выбрать другой шрифт.
Если пользователь выберет «крупный шрифт» (120 точек на дюйм) и перезагрузит систему, чтобы новые параметры вступили в силу, то после этого функция GetDialogBaseUnits будет возвращать значения baseunitX = 10, baseunitY=20. Windows автоматически увеличит размеры диалоговых окон, и поэтому все текстовые надписи по-прежнему будут размещены правильно.
Применяемая шаблонная система единиц дает еще одну возможность управления видом и размерами диалогового окна на стадии описания шаблона. Для этого достаточно в параметрах диалога выбрать другой шрифт при помощи инструкции FONT.