DrawText с DT_CALCRECT - Есть ли способ вычислить высоту прямоугольника БЕЗ изменения ширины (с большими строками)?

У меня есть строка, в которой мне нужно вычислить размер Rect (высоту текста) при рисовании. Моя реализация использует функцию DrawTextW () с флагами DT_WORDBREAK или DT_CALCRECT .

Пример моей строки:

thisisaverylonglonglonglineoftextthatneedstofitinsideagivenrectwidth

Я вижу в документах MSDN , что метод DrawTextW () утверждает:

Если самое большое слово шире, чем прямоугольник, ширина увеличена. Если текст меньше ширины прямоугольника, ширина уменьшается. Если есть только одна строка текста, DrawText изменяет правую сторону прямоугольника так, чтобы она ограничивала последний символ в строке.

однако в документах MSDN метод DrawTextExW () не утверждает этого.

Итак, я попытался вычислить высоту с помощью метода DrawTextExW () , однако результат такой же, как и с функцией DrawTextW () , где ширина прямоугольника увеличивается. чтобы уместить самую большую строку текста.

Итак, как я могу правильно рассчитать высоту текстового прямоугольника с заданной (фиксированной) шириной при рисовании большой строки (без пробелов), где указаны DT_WORDBREAK и DT_CALCRECT ?

РЕДАКТИРОВАТЬ:

Кстати, кто-нибудь знает, как Microsoft Excel отрисовывает текст в ячейках? Есть ли вызов API для этого текстового рисунка? Отсюда и возник мой первоначальный вопрос, однако способ, которым он реализован в Excel, заключается в рисовании текста и разбиения по словам / переноса слов на любом символе (а не только на пробеле).

6
задан Simon 24 October 2011 в 07:18
поделиться