Wordwrap Win32 - PullRequest
       16

Wordwrap Win32

0 голосов
/ 02 мая 2009

Я пытаюсь завернуть блок текста в окно, которое в противном случае было бы слишком длинным. Используемый шрифт не является шрифтом фиксированной ширины, поэтому GetSystemMetrics не будет возвращать точные значения для моего текста.

Использование окна static здесь не вариант, потому что окно static не сообщает мне одну важную информацию: высота текста, нарисованного после переноса слов.

Есть идеи?

Billy3

Ответы [ 3 ]

4 голосов
/ 02 мая 2009

Проверьте вызов Win32 API DrawtextEx . Вам нужно будет передать параметр DT_CALCRECT , сообщая Windows, что вы хотите рассчитать прямоугольник.

2 голосов
/ 02 мая 2009

Можно использовать функцию API DrawText () с установленным флагом DT_CALCRECT Сначала вам нужно будет выбрать правильный шрифт для HDC.

1 голос
/ 07 мая 2009

DrawTextEx() сделает все, что вам нужно и нужно, если весь текст будет отображаться одним шрифтом.

Если вам нужно смешать шрифты, вам придется делать работу самостоятельно. В этом случае вы захотите взглянуть на API-интерфейсы, такие как GetTextMetrics() (не GetSystemMetrics()) и GetTextExtentExPoint32(), чтобы определить позиции и размеры для каждого прогона.

Если вам нужно обрабатывать сложные сценарии (например, языки с написанием справа налево и сценарии, в которых буквы меняют форму в зависимости от контекста), вам потребуется Uniscribe. Внимание: Uniscribe - мощный, но очень низкий уровень. Может потребоваться много работы, чтобы обернуть его интерфейсом более высокого уровня. Если вам нужна сложная обработка скриптов, вам лучше использовать браузер.

...