Как написать современное программное обеспечение Windows на С++?
Мне очень интересно, как современное программное обеспечение Windows написано на С++ в наши дни. Я спросил своего друга, который работал над программным обеспечением Windows, и сказал, что с последними его работами были MFC, а затем WTL. Он сказал, что MFC уже не что-то современное, но WTL все еще используется, но он не знал намного больше. Он также сказал, что WTL не был таким современным и до этого он запрограммирован в чистом Windows API.
Как написать программное обеспечение для Windows Vista или Windows 7? Вы все еще используете WTL? Что относительно MFC и чистого API Windows? Или есть другие библиотеки сейчас?
Я мало что знаю об этом, но С# или другие языки .NET заменили С++ при написании современного программного обеспечения Windows?
Ответы
Ответ 1
Из того, что я видел за последние несколько лет:
-
WTL находится на линии жизнеобеспечения. Заброшенный Microsoft, подхваченный фанатами, и было несколько очень преданных последователей. Очень чистая, но кривая обучения крутая, а основание вентилятора сокращается. Группа Yahoo не очень активна. Я не могу рекомендовать его.
-
MFC получила еще одну жизнь в жизни, когда MSFT выпустила пакет функций. Довольно обширный и немного не-MFC-иш, он имеет сильную поддержку скиннинга, стыковки макетов и лент. Я думал, что это будет дико популярно, но никогда не видел, чтобы многие разработчики прыгали на нем. Вопросы форума MSDN были скудными. Если у вас есть существующая кодовая база MFC, тогда обязательно посмотрите. Еще одно обновление MFC для VS2010 с добавленными функциями Win7, оно остается решением для пользовательского интерфейса компании.
-
wxWidgets все еще существует. Нет личного опыта, но Господь, несколько практикующих, которых я слышал, вызывают бурю. Реальный горький материал тоже.
-
Qt существует довольно давно, но значительно увеличил поток, особенно в прошлом году. Кому это нравится, ему это очень нравится. Он также выходит за рамки библиотеки классов UI, их пользователи активно ищут решения общих задач программирования, которые начинаются с буквы Q. Это мощный вотум доверия.
Но если вы находитесь в стеке Microsoft, ни одна из этих библиотек классов не находится там, где работает реальный интерфейс. WPF - слон в комнате, его возможности находятся в сотне миль от того, что указано выше. Его способность нарушать границы устройства и парадигмы мощна, написание кода, который работает на рабочем столе, а также в веб-браузере, а также на телефоне трудно превзойти. Но С++ не является частью этого.
Ответ 2
WTL, Qt, wxWidgets используются довольно часто.
-
Все они позволяют быстро разрабатывать графический интерфейс и довольно универсальны (третий вариант, на мой взгляд, занимает больше времени, чтобы привыкнуть). Второй и третий варианты действительно классные, потому что они кросс-платформенные.
-
Написание окон в чистом WinAPI является чрезвычайно старым, но иногда может быть интересным.
-
C#
подход к созданию окон еще более быстрее по сравнению с предыдущими параметрами, но немного менее гибким.
Ответ 3
Посмотрите Qt - вам может понравиться. Если, конечно, вы не предпочитаете что-то не переносное. Но даже если вы не планируете строить на OS X, Linux, телефонах,... основа Qt хорошо написана, хорошо документирована и просто работает. SDK теперь включает в себя хорошую IDE (Qt Creator).
Ответ 4
WTL каждый раз, если ваша основная платформа - Windows. Google Chrome использует его, Spotify использует его. Его наиболее продуктивный, гибкий, не является ресурсом. Гибким я имею в виду, что вы можете использовать его с чистым кодом Win32 API/другим кодом С++ без особых трудностей.
Для получения дополнительной информации WTL: коллекция ссылок WTL
Ответ 5
В .NET(С#, VB.NET,...) передний край программирования GUI WPF на данный момент ( заменяя WinForms). Скомпилированный код в .NET на самом деле CIL, который скомпилирован в собственный код во время выполнения JIT. Это имеет то преимущество, что вам не нужно заботиться о 64 или 32-битных целевых системах.
В С++ Qt кажется хорошим решением, поскольку оно чисто разработано и предоставляет большой набор услуг. То, что мне не нравится в Qt, это его компиляция в оба конца, это так медленно, есть компилятор moc, компилятор, а затем ссылка, для получения исполняемого файла требуется возраст по сравнению с С#/. NET. С другой стороны, вы можете столкнуться с ним даже во встроенных системах, что делает его интересным в таких случаях.
Я бы посоветовал вам хотя бы взглянуть на С#/.NET и поэкспериментировать с ним, прежде чем принимать решение.
Ответ 6
После оценки я пришел к ситуации, когда чистые Win32 или WTL - это единственный способ написать приложения с высоким стилем, которые не основаны на WRT.
Новый взгляд - главный момент. MFC выглядит ужасно на Win8 и Win10, особенно со всеми этими конфетами Feature Pack. Чистый MFC хорош, но толстый, а часть модели зрения просто ужасает, и мне нравится WTL больше. Но это недокументировано, и это так плохо и страшно.
WxWidgets - уродливая игрушка.
QT больше не является альтернативой. Они слишком много внимания уделяют мобильным и прикладным программам. И если вы идете в MacOSX, вы вообще не можете использовать QT (да, это будет работать, но это заставит вас рвать о UX).
WinRT настолько ограничительна и не обладает функциями, которые вы не можете использовать. И вы можете быть уверены, что он потерпит неудачу, потому что никто не использует WinStore или Windows на планшетах/телефонах. Так зачем беспокоиться.
WPF в порядке, если вы считаете, что пользователь оценивает медленные и толстые приложения. Это выглядит красивее, но все глазные сладости теперь больше не являются частью руководящих принципов дизайна пользовательского интерфейса, а набор функций виджетов меньше, чем виджет Win32. Невероятно, но верно. И я блокирую вас использованием unportable С#, который устарел на мой взгляд, потому что теперь производительность снова имеет значение (потому что производительность - это энергия, это время жизни).
Даже Херб Саттер и другие высокопоставленные сотрудники MS расскажут вам, что С++ - это будущее. И следующее приложение-убийца построено на С++ 14, и Microsoft это знает.