Я думаю, что у вашего вопроса есть скрытый вопрос: как написать приложение / фреймворк с графическим интерфейсом?
Кажется, что беспорядок очень низок по сравнению с тем, что я быстро прогуглил.Если вы хотите пропустить много кода, просто используйте что-то вроде Qt Framework, который также рендерит большинство вещей, используя OpenGL (или GTK +, зависит от того, какую лицензию вы хотите).
Нет простого ответа, если вы хотите написать большеили меньше с нуля, и я попытаюсь просто пройтись по нему на очень высоком уровне и просто выделить очень основную идею, как это обычно работает.
Поскольку вы пометили его тегом C ++, то правильный C ++можно использовать классы.
У вас будут классы для таких вещей, как Sound (MP3), с такими методами, как декодирование, кодирование и т. д. Тогда у вас будут классы для элементов GUI с такими методами, как onPaint, onClick.и т. д.
Допустим, вы хотели кнопку.Это был бы класс с переменными, такими как x, y, ширина, высота, текст, clickHandler, включен и так далее.Он будет иметь некоторые низкоуровневые обработчики событий, такие как onPaint, onClick (этот будет проверять, находится ли мышь над кнопкой и включена ли она, и если все эти проверки пройдут, вызовет clickHandler).У него также могут быть некоторые методы, такие как isEnabled (), disable (), enable () и т. Д.
Теперь вы можете создавать столько экземпляров кнопок, сколько хотите, каждый из которых имеет свое собственное состояние (включено).или отключено, текст, ширина, высота, все это).Вы бы установили clickHandler для каждой кнопки.
Будут некоторые глобальные переменные, но большая часть внутреннего содержимого находится внутри классов.Если у вас есть какая-то иерархия, в таком окне много кнопок, тогда ваш класс Window будет просто иметь список кнопок.И не забывайте, что каждый класс должен находиться в новом файле, если не существует нескольких очень тесно связанных.
Но на самом деле вы не хотите писать что-либо изэто так, как уже делают огромные библиотеки.
Что касается того, как склеить все это вместе, вы, вероятно, захотите следовать соглашению, используемому конкретной выбранной вами средой.Если вы работаете в Windows и хотите сделать приложение только для Windows, используйте WPF (или Winforms).Qt хорош для кроссплатформенных вещей и довольно современен, но лицензия немного ограничивает вас, если вы создаете коммерческое приложение.