getDialogBaseUnits 函数 (winuser.h)

检索系统的对话框基单位,即系统字体中字符的平均宽度和高度。 对于使用系统字体的对话框,可以使用这些值在对话框模板单位和像素之间进行转换。 对于不使用系统字体的对话框,从对话框模板单位转换为像素取决于对话框使用的字体。

对于任一类型的对话框,使用 MapDialogRect 函数执行转换都更容易。 MapDialogRect 将字体考虑在内,并将对话框模板单元中的矩形正确转换为像素。

语法

long GetDialogBaseUnits();

返回值

类型: LONG

函数返回对话基单位。 返回值的低序字包含水平对话框基单位,高序字包含垂直对话框基单位。

注解

GetDialogBaseUnits 返回的水平基单位等于系统字体中字符的平均宽度(以像素为单位);垂直基本单位等于字体的高度(以像素为单位)。

仅当对话框模板未能指定字体时,才使用系统字体。 大多数对话框模板指定字体;因此,此函数对大多数对话框没有用。

对于不使用系统字体的对话框,基本单位是对话框字体中字符的平均宽度和高度(以像素为单位)。 可以使用 GetTextMetricsGetTextExtentPoint32 函数计算所选字体的这些值。 但是,通过使用 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
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll
API 集 Windows 10版本 10.0.10 (240 中引入的 ext-ms-win-ntuser-dialogbox-l1-1-2)

请参阅

概念性

对话框

MapDialogRect

引用