FreeBasic
Главная
Вход
Регистрация
Вторник, 15.10.2024, 14:49Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Как растянуть главное окно на весь экран
electrikДата: Вторник, 29.03.2022, 15:09 | Сообщение # 1
Полковник
Группа: Друзья
Сообщений: 182
Репутация: 3
Статус: Offline
Привет. Никогда такого не делал, и не знаю можно ли так. Есть у меня главное окно 1280X768, но монитор настроен на более высокое разрешение. Можно ли сделать так, чтобы окна програмно адаптировались к размеру монитора? А так мне зрячие говорят, что у меня программа на пол экрана. Хотелось бы именно програмно, не меняя масштаб винды.
 
haavДата: Вторник, 29.03.2022, 15:50 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1366
Репутация: 49
Статус: Offline
Привет!

Цитата electrik ()
Привет. Никогда такого не делал, и не знаю можно ли так. Есть у меня главное окно 1280X768, но монитор настроен на более высокое разрешение. Можно ли сделать так, чтобы окна програмно адаптировались к размеру монитора? А так мне зрячие говорят, что у меня программа на пол экрана. Хотелось бы именно програмно, не меняя масштаб винды.


Изменение размеров окна: ResizeWindow
Изменение размеров гаджетов: ResizeGadget
Размеры десктопа: GetWidthDesktop + GetHeightDesktop + GetCurrentSettingsDisplay

Далее Все зависит от того , как ты хочешь сделать.
1) Если просто раскрыть окно на весь экран , то это самое простое решение. Но вместе с тем и самое некрасивое , особенно если у кого-то размер монитора значительно больше твоего. В этом случае большая часть твоего окна будет пустая.
2) Если хочешь заморочиться и сделать все похоже на всех мониторах , то все размеры , расположение и может быть шрифт гаджетов должны устанавливаться в процентном соотношении , в зависимости от размера монитора. Второй вариант для тебя мне кажется проблематичным , поскольку тут тебе рядом понадобится кто-то зрячий. В любом случае , если программа не приватная , ты можешь выкладывать ее здесь и я по возможности помогу расставить гаджеты , если они будут криво смотреться в окне или наезжать друг на друга.

Кроме того , функции выше не учитывают несколько мониторов. Для линукса я помню одному парню помогал получить общий размер экрана и размер каждого монитора по отдельности с помощью GDK функций. Для этого мне даже пришлось временно цеплять дополнительный монитор. Обычно я всегда обхожусь одним монитором.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
electrikДата: Вторник, 29.03.2022, 19:13 | Сообщение # 3
Полковник
Группа: Друзья
Сообщений: 182
Репутация: 3
Статус: Offline
Я буду очень благодарен за помощь. Я посмотрю как ты сделаешь, а потом выработаю свои методики.
Скажу сразу, мне ненужно на несколько мониторов, главное, чтобы на разных разрешениях отображалась примерно одинаково. Ну поскольку у меня 3 контейнера, там инфы по горизонтали минимум на 1024, а то и больше. Так что разрешения 800X600 можно не рассматривать.
Опишу где находится весь gui.
main.bas - функция CreateMainContainer.
preferences.bas - функции CreateGeneralPreferencesGadgets, CreatePreferencesGroup.
puma.bas - функция PumaEnterPage.

Вот ссылка: https://disk.pm/s/SpiqC36iR5PWbCn/download

Добавлено (29.03.2022, 19:24)
---------------------------------------------
Если на компе нет Com портов, при открытии файла с книгой, программа начнёт ругаться, что не может открыть порт, соответственно, не даст поля ввода страницы.
В комплекте положил эмулятор com порта com0com-3.0.0.0-i386-and-x64-signed.zip

Добавлено (29.03.2022, 19:39)
---------------------------------------------
И опять забыл, если уж ты вдруг будешь изменять шрифт, можно ли сделать так, чтобы видно было из далека, чтобы не присматриваться вблизи. Я не представляю как это может выглядеть на экране, но могу прикинуть так, шрифт может быть мелкий, но при этом жирный, чтобы его было лучше видно, или нет? Короче, как сделаешь так сделаешь. 10 лет работали  на стандартном шрифте и ничего. Просто если есть возможность как-то улучшить, было бы хорошо.

Сообщение отредактировал electrik - Вторник, 29.03.2022, 19:26
 
haavДата: Вторник, 29.03.2022, 20:14 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 1366
Репутация: 49
Статус: Offline
Хорошо , я посмотрю , что можно сделать.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
haavДата: Среда, 30.03.2022, 10:16 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 1366
Репутация: 49
Статус: Offline
Сергей!

Кажется теперь программа адаптируется под разрешение экрана. Так же гаджеты в главном окне изменяют свой размер при ресайзинге. Сначала я сделал без ресайзинга , но потом подумал , что мне не долго , а тебе с твоим зрением работы непочатый край. Шрифт не менял , он и так по умолчанию мне кажется достаточно различимый. Я все файлы использовал из одной папки , создав проект в своем редакторе. Сам уж распихаешь файлы по своим папкам , если конечно понравится , то что я сделал. Конечно перед заменой сделай бэкап , мало ли что. Более менее выровнял гаджеты в нескольких местах и опять у тебя один файл был в неправильной кодировке. Так же я заметил одно подозрительное место в твоей программе: в функции PumaLoadTable идет сравнение if fSize = 256 then , но размер файла таблицы (как я понял это table.txt) больше чем 256 байт. Размер файла составляет несколько килобайт, поэтому всегда выскакивает ошибка , связанная с тем , что таблица не загружена. Может я конечно что-то не то делал , но это уж ты сам разберешься. Мое дело было связано с GUI. Удачи!
Прикрепления: puma.zip (22.2 Kb)


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
electrikДата: Среда, 30.03.2022, 16:04 | Сообщение # 6
Полковник
Группа: Друзья
Сообщений: 182
Репутация: 3
Статус: Offline
Огромное спасибо! Сейчас пойду пробовать. По поводу таблицы, Table.txt - это тестовый файл для меня. А таблицы хранятся в папке Tables, там всё норм. А то что у тебя выдавал ошибку, значит таблица не была указана в настройках.

Добавлено (30.03.2022, 21:29)
---------------------------------------------
Всё отображается отлично! Ещё раз спасибо! Показал на работе, сказали норм.
сегодня, пытался делать оптимизации, короче, буду уходить от построчного чтения из файла. Уж очень медленно оно работает. Лучше грузить весь текст в память и с ним работать.
Я думал как проще сделать, чтобы код был понятен дураку, но видимо буду делать как лучше и быстрее.
Всё таки побайтовое чтение файла - это зло! Я даже пробовал ставить флаги, которые вроде ускоряют, но на практике одна фигня.

 
zamabuvaraeuДата: Суббота, 02.04.2022, 06:47 | Сообщение # 7
Подполковник
Группа: Друзья
Сообщений: 149
Репутация: 5
Статус: Offline
>Лучше грузить весь текст в память и с ним работать.

Тогда лучше сразу переходить на отображение файла в память. Как ни странно, но вызовы CreateFile + CreateFileMapping + MapViewOfFile работают быстрее и требуют меньше памяти, чем CreateFile + ReadFile.
 
electrikДата: Воскресенье, 03.04.2022, 21:29 | Сообщение # 8
Полковник
Группа: Друзья
Сообщений: 182
Репутация: 3
Статус: Offline
Про мэппинг я уже думал, но то что у меня получилось при помощи открытия и чтения файла, уже вполне устроило. Даже на больших файлах, которых у нас никогда не будет, работает без пауз, а это мне и надо было.
 
  • Страница 1 из 1
  • 1
Поиск: