BlackBox многие контролы рисует самостоятельно. Раньше это мне казалось минусом, так как эти контролы казались немного устаревшими. Затем на форуме читал эпопею по переносу BlackBox на Linux и как я понял, там использовали сначала GTK для рисования некоторых контролов, а затем некоторые из них были переделаны на ручное рисование. Тем не менее, какие-то проблемы там оставились: была проблема с циклом сообщений, который крутился внутри GTK, а не внутри BlackBox, также была проблема с MDI (так как Linux ее, похоже, нативно не поддерживает).
Сейчас я понимаю, что проблема не в том, что BlackBox рисует некоторые контролы самостоятельно, а в том, что BlackBox НЕ РИСУЕТ ВСЕ КОНТРОЛЫ САМОСТОЯТЕЛЬНО (то есть он в каких вещах опирается на Windows: на MDI, на отображение меню, возможно, что на отображение скролл баров и т.д.). Если бы BlackBox рисовал все самостоятельно: внутренние MDI окна, скролл бары, меню и т.д, то перенос на другие платформы был бы тривиален. Нужно было бы просто научиться рисовать примитивы и обрабатывать сообщения от системы.
Самое главное нужно абстрагировать дизайнерский стиль от системных вещей, связанных с перерисовкой и обработкой сообщений. Например, можно создать несколько модулей, которые рисуют контролы под разные стили. Например, можно было бы рисовать кнопки как в Windows, Linux, Mac OS, BlueBottle, Android и т.д. И даже можно было бы проводить интересные эксперименты, например, можно было бы запустить приложение на Windows, с контролами как на Mac OS.
Также я думаю, что рисовать все - это перспективная идея, в том плане, что легко можно будет перенести интерфейс на embedded устройство, у которого очень примитивное API для рисования, также можно будет делать интерфейс и под Android, iPhone и т.д, думаю, что примитивные интерфейсы рисования чего угодно и получения сообщений от системы они также предоставляют. Также, думаю, что современный Web тоже движется примерно в эту же сторону: браузер будет предоставлять интерфейс по рисованию чего угодно. В принципе - это не что-то новое. QT примерно для этого и создан. Но у QT есть недостаток, то что он написан на C++. Нужен простенький, легковесный QT, написанный на Обероне!!!
|