45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|||||||||||
1 | |||||||||||
DRAWTEXT(DT_CALCRECT)17.12.2014, 11:20. Показов 6746. Ответов 10
Метки нет (Все метки)
Доброго времени суток. Пытаюсь создать окно "static" с определённой шириной и высотой, в зависимости от текста окна(чтобы высоты хватало на все символы). Нашёл
Добавлено через 13 минут Сроки горят, а я на такой мелочи завис...печалька гнобит
0
|
17.12.2014, 11:20 | |
Ответы с готовыми решениями:
10
DrawText ( ? ) DrawText + очистка Ошибка в DrawText() Не работает DrawText() |
567 / 198 / 70
Регистрация: 25.05.2012
Сообщений: 816
|
|
17.12.2014, 11:24 | 2 |
DrawText нельзя для этого использовать, забудь.
Для определения ширины и высоты текста используется функция GetTextExtentPoint32. Важно, чтобы в dc, для которого определяются параметры был выбран нужный шрифт.
1
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|
17.12.2014, 14:19 [ТС] | 3 |
Спасибо! Только не пойму как рассчитывать только высоту? Дело в том, что ширина окна всегда должна быть оинаковой, а при необходимости переноситься, и с учётом переносов нужно вычислить с какой высотой создавать окно?
Добавлено через 9 минут Нельзя ли пример с установкой текущего шрифта в DC? Я не наглый, просто реально не успеваю это разгрызть, а сроки поджимают =( Добавлено через 10 минут Может получить размер символов шрифта + математика и двоичная логика? Скорее всего велосипед, но не могу найти то что мне нужно...времени жаль мало =/ Добавлено через 28 минут Плохая идея...wchar_t.
0
|
567 / 198 / 70
Регистрация: 25.05.2012
Сообщений: 816
|
|||||||||||
17.12.2014, 15:10 | 4 | ||||||||||
Примерно так (не проверял, так что могут быть ошибки/опечатки, но принцип должен быть понятен):
Только высоту можно узнать проще:
1
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|
17.12.2014, 15:47 [ТС] | 5 |
0
|
567 / 198 / 70
Регистрация: 25.05.2012
Сообщений: 816
|
|
17.12.2014, 17:46 | 6 |
Автоперенос строк учитываться и не будет, все нужно считать вручную. Только зачем такие сложности? Не проще создать окно фиксированных размеров и туда помещать текст.
К тому же, чтобы не возникала неопределенность, изначально хотя бы один параметр (ширина или высота) в любом случае должен быть задан, чтобы исходить из него при расчете второго параметра.
0
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|
17.12.2014, 18:27 [ТС] | 7 |
Может не правильно вопрос поставлен...программа для отправки сообщений - количество символов заранее не известны, для каждого сообщения создаётся своё окно - здесь фиксированные размеры не подойдут, разве что с запасом по высоте - но это же не по-мужски) Кроме того, на счёт одного фиксированного параметра - ширина как раз фиксирована. Нужно из ширины, текста и шрифта каким-то образом рассчитать высоту для создаваемого окна, чтобы туда поместился весь текст с учётом автопереносов.
Для большей наглядности, интерфейс вибера или другого приложения обмена сообщений - там ширина окна постоянна, а вот высота зависит от количества символов текста.
0
|
567 / 198 / 70
Регистрация: 25.05.2012
Сообщений: 816
|
|
17.12.2014, 19:29 | 8 |
Тогда только вручную разбивать текст на строки, проверяя, чтобы каждая строка поместилась в экран, и пересчитывать высоту получившегося текста исходя из количества строк. DrawText использовать для автопереноса тоже здесь не очень правильно, потому что можно только предполагать как будет отформатирован текст. Текст нужно формировать вручную и выводить построчно.
Других способов я навскидку не знаю, может кто еще подскажет.
0
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|
17.12.2014, 19:45 [ТС] | 9 |
Плохо. Рассчитывал на велосипед) Странно, что в винапи такую фичу не внедрили, вроде довольно нужная хрень..
Спасибо и на том)
0
|
567 / 198 / 70
Регистрация: 25.05.2012
Сообщений: 816
|
||||||
17.12.2014, 20:00 | 10 | |||||
Сообщение было отмечено Retyrn0 как решение
Решение
Все проще оказалось. Делается через DrawText, просто никогда не доводилось использовать. Вот решение:
1
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|
17.12.2014, 20:48 [ТС] | 11 |
0
|
17.12.2014, 20:48 | |
17.12.2014, 20:48 | |
Помогаю со студенческими работами здесь
11
функция DrawText() DrawText, TextOut Местоположение текста (DrawText) Есть ли у DrawText уникодовая версия? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |