Не подскажете, нет ли в АПИ32 реализаций подсчета реального количества строк для выводимого текста?
Проблем такой:
Рисую при помощи DrawText на канве грида с флагом DT_EDITCONTROL, ну и хотел бы ресайзить вышину строк грида в зависимости от реально получающихся строк тескта.
В каком направлении копать, плззз?
Здравствуйте Frostyland, Вы писали:
F>Не подскажете, нет ли в АПИ32 реализаций подсчета реального количества строк для выводимого текста?
F>Проблем такой:
F>Рисую при помощи DrawText на канве грида с флагом DT_EDITCONTROL, ну и хотел бы ресайзить вышину строк грида в зависимости от реально получающихся строк тескта.
F>В каком направлении копать, плззз?
Дык, ето, DrawText с флагом DT_CALCRECT вроде самое оно... Только
DrawText returns the height of the formatted text but does not draw the text.
т.е. ее (DrawText) надо 2 раза вызывать: с флагом и без оного.
Здравствуйте Patalog, Вы писали:
P>Дык, ето, DrawText с флагом DT_CALCRECT вроде самое оно... Только
P>P>DrawText returns the height of the formatted text but does not draw the text.
P>
P>т.е. ее (DrawText) надо 2 раза вызывать: с флагом и без оного.
Да не все так просто. Это работает для текста с CRLF внутри,
то есть если я имею тескт bla\nbla-bla, то все работает, как часы:
----------
If there are multiple lines of text, DrawText uses
the width of the rectangle pointed to by the lpRect parameter
and extends the base of the rectangle to bound the last line of text.
----------
Однако, если текст изначально не мультилайн, то эта фуня злобно меняет ширину Rect'a
и возвращает всегда стандартную высоту (в моем случае 15 пикулей)!!!
If there is only one line of text, DrawText _modifies the right side_
of the rectangle so that it bounds the last character in the line.
----------
То есть получается, что если я юзаю Дру с DT_EDITCONTROL, то она красиво укладывает
текст по ширине в нужное количество строк (сама режет по словам) — но после этого
уже поздно считать высоту! Ежели я пытаюсь посчитать высоту, это работает
только для заранее поделенного на строки текста...
Здравствуйте Frostyland, Вы писали:
F>Здравствуйте Patalog, Вы писали:
P>>Дык, ето, DrawText с флагом DT_CALCRECT вроде самое оно... Только
P>>P>>DrawText returns the height of the formatted text but does not draw the text.
P>>
P>>т.е. ее (DrawText) надо 2 раза вызывать: с флагом и без оного.
F>Да не все так просто. Это работает для текста с CRLF внутри,
F>то есть если я имею тескт bla\nbla-bla, то все работает, как часы:
F>----------
[skip]
F>То есть получается, что если я юзаю Дру с DT_EDITCONTROL, то она красиво укладывает
F>текст по ширине в нужное количество строк (сама режет по словам) — но после этого
F>уже поздно считать высоту! Ежели я пытаюсь посчитать высоту, это работает
F>только для заранее поделенного на строки текста...
Хм. А ежели их вместе заюзать? Интересно даже.
Здравствуйте Frostyland, Вы писали:
F>Здравствуйте Patalog, Вы писали:
F>----------
F>Однако, если текст изначально не мультилайн, то эта фуня злобно меняет ширину Rect'a
F>и возвращает всегда стандартную высоту (в моем случае 15 пикулей)!!!
F>F>If there is only one line of text, DrawText _modifies the right side_
F>of the rectangle so that it bounds the last character in the line.
F>
F>----------
F>То есть получается, что если я юзаю Дру с DT_EDITCONTROL, то она красиво укладывает
F>текст по ширине в нужное количество строк (сама режет по словам) — но после этого
F>уже поздно считать высоту! Ежели я пытаюсь посчитать высоту, это работает
F>только для заранее поделенного на строки текста...
Попробуй флажок DT_WORDBREAK для DrawText