Поделиться через


Функция 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)

См. также раздел

Основные понятия

Диалоговые окна

MapDialogRect

Справочные материалы