@ElinMyers

Как хранятся панели окна?

Привет хабр, учу C++, пытаюсь создать подобие консольного интерфейса.
Идея такая: есть канвас - матрица пробелов, ибо пробелы у меня вместо пикселей. На канвас я хочу поместить панели - области окна, в которые я буду выводить информацию. Рамка панели будет рисоваться символами ASCII 185 - 205.
Например:
Создание экземпляра класса Canvas, то есть создаём матрицу пробелов WIDTH x HEIGHT
Canvas canvas(WIDTH, HEIGHT);

Создание панели из верхнего левого угла на пол экрана:
canvas.addPanel(0, 0, WIDTH/2, HEIGHT, 1); // Последняя цифра это id, что бы как то различать панели


Создание панели во второй половине экрана:
canvas.addPanel(WIDTH/2+1, 0, WIDTH, HEIGHT, 2);
ВАЖНО: это ещё не реализовано, а лишь идея. Работает только в тетрадке. Все методы и классы - больная фантазия автора.
Пример результата:
5df4a36ebfb70828557699.png

Собственно вопрос: Как хранятся эти панели? Как связный список? В одной статье на Хабре было написано, что это стек, но как мне получать доступ к другим панелям, когда стек мне даёт только верхнюю? Или я неправильно понимаю как работает стек?

Какую литературу читать о проектировании интерфейса?
Учусь всего несколько месяцев, не пинайтесь особо.
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ответы на вопрос 1
@koronabora
Человек
Я бы так делал:
- есть оконный буфер, он заполняется методами paint у каждого экземпляра класса при вызове. Тоесть у рамок, окон и всего прочего есть paint. Они отрисовывают себя в буфер через специальную функцию. Я-бы вообще сделал рисование в отдельном потоке, но это вопросы реализации.
- буфер после того как заполнен всеми экземплярами классов рисуется на экран любым способом. Буфер храниться в виде двумерного массива.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы