:( Количество строк у многострочного текста?
От: Frostyland  
Дата: 31.05.02 04:20
Оценка:
Не подскажете, нет ли в АПИ32 реализаций подсчета реального количества строк для выводимого текста?
Проблем такой:
Рисую при помощи DrawText на канве грида с флагом DT_EDITCONTROL, ну и хотел бы ресайзить вышину строк грида в зависимости от реально получающихся строк тескта.
В каком направлении копать, плззз?
С уважением, В.Куликов
Re: :( Количество строк у многострочного текста?
От: Patalog Россия  
Дата: 31.05.02 05:43
Оценка:
Здравствуйте 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 раза вызывать: с флагом и без оного.
Почетный кавалер ордена Совка.
Re[2]: Не тут то было!!!!
От: Frostyland  
Дата: 31.05.02 06:17
Оценка:
Здравствуйте 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, то она красиво укладывает
текст по ширине в нужное количество строк (сама режет по словам) — но после этого
уже поздно считать высоту! Ежели я пытаюсь посчитать высоту, это работает
только для заранее поделенного на строки текста...
С уважением, В.Куликов
Re[3]: Не тут то было!!!!
От: Patalog Россия  
Дата: 31.05.02 07:24
Оценка:
Здравствуйте 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>только для заранее поделенного на строки текста...

Хм. А ежели их вместе заюзать? Интересно даже.
Почетный кавалер ордена Совка.
Re[3]: Не тут то было!!!!
От: VVV Россия  
Дата: 31.05.02 10:09
Оценка:
Здравствуйте 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.