Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2022, 12:11   #1
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 195
По умолчанию Вывод в окно.

Здравствуйте! Появилась новая проблема, есть задача, вот она:
Цитата:
От левого верхнего до нижнего правого угла области окна вывести текст таким образом, чтобы он полностью помещался в окне при любых изменениях размеров окна. Использовать шрифт Times New Romans Cyr.
Даже не знаю, что сложнее, реализовать или понять смысл условия, чего хочет автор. Я ранее подобным не занимался так что не судите строго.
Не знаю, строки бывают разной длины, с чего начать, найти самую длинную строку в тесте? Может он вообще имеет ввиду нечто такое, что, мол, нужно вывести строку текста от левого верхнего до нижнего правого края по диагонали, причем,
одну строку)
Короче говоря буду рад любому совету.

пока что создал структуру LOGFONT и заполнил её так:
Код:
lf.lfHeight = 0;
			lf.lfWidth = 0;
			lf.lfEscapement = 0;
			lf.lfOrientation = 0;
			lf.lfWeight = FW_DONTCARE;
			lf.lfItalic = 0;
			lf.lfUnderLine = 0;
			lf.lfStrileOut = 0;
			lf.lfCharSet = DEFAULT_CHARSET;
			lf.lfOutPrecision = OUT_STROK_PRECIS;
			lf.lfClipPrecision = 
			lf.lfQuality = PROOF_QUALITY;
			lf.lfPitchAndFamily = DEFAULT_PITCH;
			_tcscpy_s(lf.lfFaceName, _
					  _tcslen(TEXT("Times New Roman Cyr")),
					  TEXT("Times New Roman Cyr"));
			hFont = CreateFontIndirect(&lf);
apofioz вне форума Ответить с цитированием
Старый 29.09.2022, 09:29   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,433
По умолчанию

Начните с того, что выведите в окно хоть какой текст в любом месте.
А потом будете думать и учиться как этот текст сдвигать и т.д.

А если что-то непонятно с условием, ну так спросите автора.
Я лично это понимаю, что текст всегда должен заполнять все окно, но это не точно...
waleri вне форума Ответить с цитированием
Старый 29.09.2022, 13:32   #3
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 195
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
А если что-то непонятно с условием, ну так спросите автора.
) Интересно как, я книгу читаю, мне задания индивидуально не дают.


Цитата:
Сообщение от waleri Посмотреть сообщение
Я лично это понимаю, что текст всегда должен заполнять все окно, но это не точно...
Да, но как это будет выглядеть, если окно уменьшить, размер шрифта корректировать?
apofioz вне форума Ответить с цитированием
Старый 30.09.2022, 07:29   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,433
По умолчанию

Цитата:
Сообщение от apofioz Посмотреть сообщение
Интересно как, я книгу читаю, мне задания индивидуально не дают
А картинок нету?


Цитата:
Сообщение от apofioz Посмотреть сообщение
если окно уменьшить, размер шрифта корректировать
Угу, причем надо будет подбирать широту/высоту ну или как минимум высоту, чтоб ширина вписывалась.
waleri вне форума Ответить с цитированием
Старый 30.09.2022, 08:12   #5
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 195
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
А картинок нету?
Нет, только, текст задачи, который я привёл.


Цитата:
Сообщение от waleri Посмотреть сообщение
Угу, причем надо будет подбирать широту/высоту ну или как минимум высоту, чтоб ширина вписывалась.
Я не знаю, как это решить, если текст брать из файла, то можно узнать размер файла, размер можно умножить на среднюю ширину символа, таким образом, получается размер в пикселях(всего текста), но как подобрать размер окна в который этот текст войдёт, как описано в условии, от Левого верхнего до правого нижнего угла. Есть ещё ширина символа, но она у меня пока что никуда не вписывается. Я думаю, что первоначально, в сообщении WM_CREATE подогнать размер так чтобы текста туда помещался полностью, переместить т.е. в данном случае настроить окно с помощью функции MoveWindow, но здравых идей, как вычислить эти размеры пока что нет.
К тому же их(размеры окна) нужно будет постоянно вычислять при изменении размеров окна.
apofioz вне форума Ответить с цитированием
Старый 30.09.2022, 12:21   #6
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,174
По умолчанию

Вариант такой. Рисуете текст на Bitmap любым шрифтом через DrawText и ей же выполняете вычисления размера области вывода текста. Потом StretchBlt растягиваете на все окно.
macomics вне форума Ответить с цитированием
Старый 01.10.2022, 05:35   #7
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 195
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Вариант такой. Рисуете текст на Bitmap любым шрифтом через DrawText и ей же выполняете вычисления размера области вывода текста. Потом StretchBlt растягиваете на все окно.
А ничего, что я этого ещё не изучал. Шрифт задан в условии, конкретный шрифт. Если ввод выполняется из файла, кто гарантирует, что все строки одинаковой длины, в условии ясно сказано "От левого верхнего до нижнего правого угла области окна", видимо, строки должен быть одинаковой длины.
apofioz вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод сообщений консоли в модальное окно don_zaresh Python 1 09.04.2018 08:21
Массивы.VBA(Excel). Вывод в окно Екатерина Гензе Помощь студентам 2 13.12.2016 22:28
FASM. Вывод картинки в окно DOS R71MT Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 04.08.2015 11:39
Вывод 3д через консольное окно. Neketek Visual C++ 0 18.04.2012 08:40
Вывод примитивов в окно формы CashaL0T Общие вопросы .NET 5 26.11.2008 00:57