Я очень интересуюсь тем, как современное программное обеспечение Windows записано в C++ в наше время. Я спросил своего друга, который работал над программным обеспечением Windows, и он сказал, что последними вещами, с которыми он работал, был MFC и затем WTL. Он сказал, что MFC больше является ничем современным, но WTL все еще используется, но он не знал намного больше. Он также сказал, что WTL не был настолько современен и прежде который он запрограммировал в чистом Windows API.
Как каждый пишет программное обеспечение для Windows Vista или Windows 7? Вы все еще используете WTL? Что относительно MFC и чистого Windows API? Или есть ли теперь другие библиотеки?
Я не знаю много об этом, но имею C#, или другие языки.NET заменили C++ в записи современного программного обеспечения Windows?
Из того, что я видел за последние несколько лет:
WTL находится на пути к спасению. Заброшенный Microsoft, подхваченный фанатами, и было несколько очень преданных последователей. Очень чисто, но кривая обучения крутая, а количество фанатов сокращается. Группа Yahoo не очень активна. Я не могу это рекомендовать.
MFC получил новую жизнь, когда MSFT выпустила пакет функций. Довольно обширный и немного не похожий на MFC, он имеет сильную поддержку скиннинга, стыковки макетов и лент. Я думал, что он будет очень популярен, но никогда не видел, чтобы на него прыгало много разработчиков. Вопросы на форуме MSDN были редкими. Если у вас есть существующая кодовая база MFC, обязательно взгляните. Еще одно обновление MFC для VS2010 с добавленными функциями Win7, оно остается основным UI-решением компании.
wxWidgets все еще существует. Нет личного опыта, но Господь, несколько практикующих, от которых я слышал, устраивают бурю. Настоящая горькая штука тоже.
Qt существует довольно давно, но значительно расширился, особенно в прошлом году.Кто бы ни использовал это , действительно это нравится. Он также выходит за рамки библиотеки классов пользовательского интерфейса, их пользователи активно ищут решения общих задач программирования, которые начинаются с буквы Q. Это мощный вотум доверия.
Но если вы работаете в стеке Microsoft, ни одна из этих библиотек классов не является тем местом, где находится реальная разработка пользовательского интерфейса. WPF - слон в комнате, его возможности на сотню миль превосходят перечисленные выше. Его способность преодолевать границы устройств и парадигм очень сильна, писать код, работающий как на настольном компьютере, так и в веб-браузере или телефоне, сложно. Но C ++ не является частью этого.
WTL, Qt, wxWidgets используются довольно часто.
Все они позволяют быстро разрабатывать графический интерфейс и довольно универсальны (третий вариант, на мой взгляд, требует больше времени, чтобы привыкнуть). Второй и третий варианты действительно хороши, потому что они кроссплатформенные.
Написание окон на чистом WinAPI - это очень старая школа, но иногда это может быть интересно.
Подход C #
к созданию окон даже более быстрый по сравнению с предыдущими вариантами, но немного менее гибкий.
Взгляните на Qt - он может вам понравиться. Если, конечно, вы не предпочитаете какую-то непереносимую версию. Но даже если вы не планируете строить на OS X, Linux, телефонах, ... структура Qt хорошо написана, хорошо документирована и просто работает. SDK теперь также включает красивую IDE (Qt Creator).
В .NET (C#, VB.NET, ...) передовым направлением программирования графических интерфейсов в настоящее время является WPF (заменяющий WinForms). Компилируемый код в .NET - это фактически CIL, который компилируется в нативный код во время выполнения с помощью JIT. Преимуществом этого является то, что вам не нужно заботиться о 64- или 32-битных целевых системах.
В C++, Qt кажется хорошим решением, так как он чисто спроектирован и предоставляет большое количество сервисов. Что мне не нравится в Qt, так это его компиляция, она настолько медленная, есть компилятор moc, компилятор, затем компоновка, это занимает целую вечность по сравнению с C#/.NET, чтобы получить исполняемый файл. С другой стороны, вы можете встретить его даже во встроенных системах, что делает его интересным в таких случаях.
Я бы посоветовал вам хотя бы взглянуть на C#/.NET и поэкспериментировать с ним, прежде чем принимать решение.