Подтвердить что ты не робот

Как написать современное программное обеспечение Windows на С++?

Мне очень интересно, как современное программное обеспечение Windows написано на С++ в наши дни. Я спросил своего друга, который работал над программным обеспечением Windows, и сказал, что с последними его работами были MFC, а затем WTL. Он сказал, что MFC уже не что-то современное, но WTL все еще используется, но он не знал намного больше. Он также сказал, что WTL не был таким современным и до этого он запрограммирован в чистом Windows API.

Как написать программное обеспечение для Windows Vista или Windows 7? Вы все еще используете WTL? Что относительно MFC и чистого API Windows? Или есть другие библиотеки сейчас?

Я мало что знаю об этом, но С# или другие языки .NET заменили С++ при написании современного программного обеспечения Windows?

4b9b3361

Ответ 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 это знает.