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 |
标头 | 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) |
请参阅
概念性
引用