Функция GetDialogBaseUnits (winuser.h)
Извлекает базовые единицы диалогового окна системы, которые представляют собой среднюю ширину и высоту символов в системном шрифте. Для диалоговых окон, использующих системный шрифт, эти значения можно использовать для преобразования между единицами шаблонов диалоговых окон, как указано в шаблонах диалоговых окон, в пиксели. Для диалоговых окон, не использующих системный шрифт, преобразование единиц шаблонов диалогов в пиксели зависит от шрифта, используемого диалоговым окном.
Для любого типа диалогового окна проще использовать функцию MapDialogRect для выполнения преобразования. MapDialogRect учитывает шрифт и правильно преобразует прямоугольник из единиц шаблона диалогового окна в пиксели.
Синтаксис
long GetDialogBaseUnits();
Возвращаемое значение
Тип: LONG
Функция возвращает базовые единицы диалога. Слово низкого порядка возвращаемого значения содержит базовую единицу горизонтального диалогового окна, а слово высокого порядка — базовую единицу вертикального диалогового окна.
Комментарии
Горизонтальная базовая единица, возвращаемая Командлетом GetDialogBaseUnits , равна средней ширине (в пикселях) символов в системном шрифте; вертикальная базовая единица равна высоте (в пикселях) шрифта.
Системный шрифт используется только в том случае, если в шаблоне диалогового окна не удается указать шрифт. В большинстве шаблонов диалоговых окон указывается шрифт; в результате эта функция не полезна для большинства диалоговых окон.
Для диалогового окна, в который не используется системный шрифт, базовыми единицами являются средняя ширина и высота (в пикселях) символов шрифта диалогового окна. Для вычисления этих значений для выбранного шрифта можно использовать функции GetTextMetrics и GetTextExtentPoint32 . Однако с помощью функции MapDialogRect можно избежать ошибок, которые могут возникнуть, если вычисления отличаются от вычислений, выполняемых системой.
Каждая горизонтальная базовая единица равна 4 единицам шаблонов горизонтальных диалогов; каждая вертикальная базовая единица равна 8 вертикальным единицам шаблона диалогового окна. Поэтому, чтобы преобразовать единицы шаблона диалогового окна в пиксели, используйте следующие формулы:
pixelX = MulDiv(templateunitX, baseunitX, 4);
pixelY = MulDiv(templateunitY, baseunitY, 8);
Аналогичным образом, чтобы преобразовать пиксели в единицы шаблонов диалогов, используйте следующие формулы:
templateunitX = MulDiv(pixelX, 4, baseunitX);
templateunitY = MulDiv(pixelY, 8, baseunitY);
Примеры
Пример см. в разделе "Создание панели инструментов поля со списком" статьи Использование полей со списком.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
Набор API | ext-ms-win-ntuser-dialogbox-l1-1-2 (появилось в Windows 10 версии 10.0.10240) |
См. также раздел
Основные понятия
Справочные материалы