Как измерить статический размер заранее?WINAPI - PullRequest
0 голосов
/ 21 января 2011

Я создаю вдову со статическим текстом, и из-за всех 96/120/180 точек на дюйм мне нужно создать мини-движок макета.

Диалог создается в коде, статика создается в коде, шрифты создаются в коде, все, в основном потому, что ресурсы в .rc также имеют свою долю проблем, связанных с DPI, и я хочу полного контроля.

Проблема со всем этим в том, что я не знаю, как найти длину текста в статике. Мне нужно вычислить начальный размер статического элемента управления, а также мне нужно рассчитать отступ между различными статическими значениями в единицах шрифта, но, поскольку я не знаю размер предыдущего статического элемента, я не могу сместить следующий один.

Самая большая проблема заключается в том, что static выполняет перенос слов, поэтому я не могу найти функцию измерения текста, которая бы вычисляла это и исправляла для пользовательского шрифта, курсива, полужирного шрифта, большого размера ...

У кого-нибудь есть идеи?

Ответы [ 2 ]

2 голосов
/ 21 января 2011

Стили статического управления (ENDELLIPSIS, PATHELLIPSIS и LEFTNOWORDWRAP), по-видимому, сопоставляются с флагами DrawText , поэтому вызов DrawText с DT_WORDBREAK|DT_CALCRECT, вероятно, будет как можно ближе ...

1 голос
/ 21 января 2011

Я не могу придумать ни одной веской причины сделать это иначе, чем все остальные библиотеки классов GUI.Просто масштабируйте размеры окна между настройкой DPI «design» и настройкой DPI целевой машины.Использование констант, независимых от DPI, довольно болезненно в MFC, поскольку все основано на пикселях.Так что держите вашу рабочую станцию ​​с общей настройкой 96 DPI, масштабируйте оттуда на целевой машине.Вы должны немного расслабиться из-за подсказок TrueType.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...