Я занимался разработкой GUI в течение некоторого времени, но иногда я все еще озадачен тем, как лучше всего к нему подойти.
Чтобы сузить возможные подходы, скажем, мы работаем с WTL / MFC / wxWidgets или любым другим фреймворком, основанным на идеологии update_ui.
Все очень просто, когда мы смотрим на образцы в любой из этих структур. Обработчики нажатий кнопок / меню / флажков и обработчиков update_ui обновляют их, чтобы отобразить фактическое состояние приложения.
Но есть и реальные приложения, которые являются сложными, такие как среды разработки Visual Studio / CodeBlocks, исследователи MSSQL и т. Д. Каждое из них имеет несколько фреймов, каждое из которых требует пользовательских меню, пользовательских иерархий и состояний, а иногда даже асинхронные обновления из нескольких потоков.
Например, если файл / сохранение требуется для исходного окна, это не относится к выводу отладки или к окну наблюдения.
Кроме того, обработчики, кажется, теряют свое место в более крупных проектах. Основной фрейм превращается в фрейм MDI или аналогичный комплексный оверлор в структуре с несколькими панелями / вкладками, где панели / вкладки имеют события активации и обновления. И довольно часто, проекты прибегают к ручному обновлению графического интерфейса через check-> enable, button-> disable подходы при активации / отображении.
Кроме того, характеристики производительности ускользают от меня, когда я думаю об update_ui. Это все еще жизнеспособно в приложениях с более чем 500 элементами (элементы меню, кнопки, флажки, серые текстовые поля, ячейки таблицы и т. Д.)?
Итак, кто-нибудь имел опыт решения этих проблем в успешных крупномасштабных проектах и знает, что стоит преследовать в настоящее время, а что нет? А может быть, каковы лучшие практики, контрольные списки для подражания?
Задача ещё не решена.
Других решений пока нет …