Функция GetDialogBaseUnits извлекает системные базовые единицы измерения диалогового окна , которые равняются средней ширине и высоте символов в системном шрифте. Для диалоговых окон, которые используют системный шрифт, Вы можете использовать эти значения, чтобы сделать преобразования из единиц измерения шаблона диалогового окна, которые определяются в нем, в пиксели. Для диалоговых окон, которые не используют системный шрифт, преобразование единиц измерения шаблона диалогового окна в пиксели зависит от шрифта, используемого блоком диалога.
Для любого типа диалогового окна более легко использовать функцию MapDialogRect, чтобы выполнить это преобразование. MapDialogRect принимает во внимание шрифт и правильно преобразует прямоугольник из единиц измерения шаблона диалогового окна в пиксели.
Синтаксис
LONG GetDialogBaseUnits(VOID); |
Возвращаемое значение
Функция возвращает базовые единицы измерения диалогового окна. Младшее слово возвращаемого значения содержит горизонтальную, а старшее слово - вертикальную базовую единицу измерения блока диалога.
Замечания
Горизонтальная базовая единица измерения, возвращенная 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); |
Пример
Пример, см. статью Использование комбинированного окна.
Смотри также
Обзор Диалоговые окна, Функции, используемые диалоговыми окнами, MapDialogRect
Размещение и совместимость GetDialogBaseUnits |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |