在 Win32 GUI 应用程序中,我需要确定工具栏按钮上的字符串占用的区域宽度,以便相应地调整按钮宽度。工具栏是普通的旧ToolbarWindow32
windows 类。我使用以下代码:
HDC dc = GetDC( toolbarWindowHandle );
SIZE size;
GetTextExtentPoint32( dc, stringToMeasure, tcslen(stringToMeasure), &size );
对于某些固定字符串(比如“Hello”)size.cx
填充了 72,但是当我制作工具栏的屏幕截图时,按钮上显示的字符串完全相同,我看到该字符串占用了 56 个像素。
差异显然取决于系统字体设置。我使用“大字体”,代码获得的值大于屏幕上的值。在具有“小字体”的机器上,获得的值较小。
我想如果我在窗口设备上下文中使用 GetTextExtentPoint32() 它将返回完全正确的大小。我究竟做错了什么?