В приложении Win32 GUI мне нужно определить ширину области, занимаемой строкой на кнопке панели инструментов, чтобы я соответствующим образом отрегулировал ширину кнопки. Панель инструментов старого класса ToolbarWindow32
windows. Я использую следующий код:
HDC dc = GetDC( toolbarWindowHandle );
SIZE size;
GetTextExtentPoint32( dc, stringToMeasure, tcslen(stringToMeasure), &size );
Для некоторой фиксированной строки (скажем «Hello») size.cx
заполнен, скажем, 72, но когда я делаю снимок экрана панели инструментов с той же самой строкой, отображаемой на кнопке, я вижу, что строка занимает, скажем, 56 пикселей.
Разница явно зависит от настроек системных шрифтов. Я использую «большие шрифты», и значение, полученное кодом, больше, чем то, что занято на экране. На машинах с «маленькими шрифтами» полученное значение меньше.
Я подумал, что если я использую GetTextExtentPoint32 () в контексте оконного устройства, он вернет точно правильный размер. Что я делаю не так?