Я разрабатываю многофункциональное клиентское программное обеспечение для Mac OS X и Linux. Я хочу портировать приложение на Windows и, не будучи пользователем продуктов Microsoft, я не очень хорошо знаком с Windows в целом.
Что мне знакомо:
В Mac OS X у меня есть вариант Cocoa и Objective C или Carbon и C/C++. В Linux у меня есть вариант GTK+ и C/C++ или Qt и C++. Я предпочитаю Cocoa в Mac OS X и GTK+ в Linux. Интерфейсный конструктор для Cocoa и Glade для GTK+ облегчают мне жизнь. Создание многофункциональных клиентов в этих операционных системах забавно.
Мои основные классы или «модель» в MVC написаны на кросс-платформенном C++. Классы пользовательского интерфейса, или «представление и контроллер» в MVC, написаны на «предпочтительном» языке и GUI API для каждой соответствующей платформы.
C++ — язык, с которым я лучше всего знаком. Я широко использую библиотеки Boost. Особенно интеллектуальные указатели, потоки и сетевые библиотеки asio. Для Unicode, локализации и т. д. я использую международные компоненты для Unicode (ICU).
Вопрос 1: Какой «предпочтительный» язык и GUI API для платформы Windows совместимы с моими классами кросс-платформенной модели?
Вопрос 2: Как получить доступ к классам кросс-платформенной модели?
Например, в Mac OS X я получаю доступ к своим классам моделей через классы контроллеров. Классы контроллера реализованы на Objective-C++. Objective-C++ — это смесь C++ и Objective-C. Объекты просмотра «разговаривают» с объектами контроллера в Objective-C, в то время как объекты контроллера «разговаривают» с объектами модели в C++.
В Linux все классы реализованы на C++.