Как написать современное программное обеспечение Windows на C ++? - PullRequest
12 голосов
/ 26 июня 2010

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

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

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

Ответы [ 6 ]

13 голосов
/ 26 июня 2010

Из того, что я видел за последние несколько лет:

  • WTL находится на линии жизни.Отказ от Microsoft, собранные фанатами, и там было несколько очень преданных последователей.Очень чистый, но кривая обучения крутая, а фанатская база сокращается.Группа Yahoo не очень активна.Я не могу это порекомендовать.

  • MFC получил еще один срок службы, когда MSFT выпустила пакет функций.Достаточно обширный и немного не MFC-иш, он имеет сильную поддержку для скинов, макетов стыковки и лент.Я думал, что он будет невероятно популярен, но никогда не видел, чтобы на него запрыгивали многие разработчики.Вопросы на форуме MSDN были редкими.Если у вас есть существующая кодовая база MFC, обязательно посмотрите.Еще одно обновление MFC для VS2010 с добавленными функциями Win7, оно остается базовым решением пользовательского интерфейса компании.

  • wxWidgets все еще существует.Никакого личного опыта, но, Господь, те немногие практикующие, от которых я слышал, переживают бурю.Реальные горькие вещи тоже.

  • Qt существует уже довольно давно, но значительно оживился, особенно в прошлом году.Кто бы это ни использовал действительно это нравится.Он также выходит за пределы библиотеки классов пользовательского интерфейса, их пользователи активно ищут решения общих задач программирования, которые начинаются с буквы Q. Это мощный вотум доверия.

Но если вы работаете в стеке Microsoft, ни одна из этих библиотек классов не является тем местом, где находится настоящая разработка пользовательского интерфейса.WPF - это слон в комнате, его возможности находятся за сотню миль от того, что перечислено выше.Его способность преодолевать границы устройства и парадигмы является мощной, писать код, который работает как на настольном компьютере, так и в веб-браузере, а также на телефоне, сложно.Но C ++ не является частью этого.

11 голосов
/ 26 июня 2010

WTL, Qt, wxWidgets используются довольно часто.

  • Все они обеспечивают быструю разработку графического интерфейса и довольно универсальны (третий вариант, на мой взгляд, требует больше времени для привыкания). Второй и третий варианты действительно крутые, потому что они кросс-платформенным.

  • Написание окон на чистом WinAPI - это очень старая школа, но иногда это может быть интересно.

  • C# подход к созданию окон еще более быстрый по сравнению с предыдущими вариантами, но немного менее гибок.

9 голосов
/ 26 июня 2010

Посмотрите на Qt - вам может понравиться.Если, конечно, вы не предпочитаете что-то непереносимое.Но даже если вы не планируете использовать OS X, Linux, телефоны, ... инфраструктура Qt хорошо написана, хорошо документирована и просто работает.SDK теперь также включает в себя хорошую IDE (Qt Creator).

7 голосов
/ 03 сентября 2010

WTL каждый раз, если вашей основной платформой является Windows. Google Chrome использует его, Spotify использует его. Это самый продуктивный, гибкий, не ресурсный боров. Под гибкостью я имею в виду, что вы можете использовать его с чистым кодом Win32 API / другим кодом C ++ без особых трудностей.

Для получения дополнительной информации о WTL: коллекция ссылок WTL

2 голосов
/ 13 декабря 2015

После оценки я пришел к ситуации, когда чистый Win32 или WTL - единственный способ написать современные приложения Win, не основанные на WRT.

Новый внешний вид - главное. MFC выглядит ужасно на Win8 и Win10, особенно со всей этой приятностью глаз. Pure MFC - это хорошо, но жирно, а часть модели представления просто ужасно возмущает, и я просто больше люблю WTL. Но это без документов, и это так плохо и страшно.

WxWidgets - ужасная игрушка.

QT больше не является альтернативой. Они слишком сосредоточены на мобильных устройствах и приложениях. А если вы используете MacOSX, вы вообще не можете использовать QT (да, он будет работать, но вас будет раздражать UX).

WinRT настолько ограничен и лишен функций, что вы не можете его использовать. И вы можете быть уверены, что он потерпит неудачу, потому что никто не использует WinStore или Windows на планшетах / телефонах. Так зачем?

WPF - это нормально, если вы думаете, что пользователь ценит медленные и толстые приложения. Это выглядит лучше, но теперь все больше не является частью рекомендаций по дизайну пользовательского интерфейса, а набор функций виджетов меньше, чем у родных виджетов Win32. Невероятно, но это правда. И я блокирую вас на использование непортативного C #, который, на мой взгляд, устарел, потому что теперь производительность снова имеет значение (потому что производительность - это энергия, это время жизни).

Даже Херб Саттер и другие высокопоставленные сотрудники MS говорят вам, что C ++ - это будущее. И следующее убийственное приложение построено на C ++ 14, и Microsoft знает это.

2 голосов
/ 26 июня 2010

В .NET (C #, VB.NET, ...) в настоящее время передовым интерфейсом программирования GUI является WPF (заменив WinForms). Скомпилированный код в .NET на самом деле CIL , который компилируется в собственный код во время выполнения JIT. Преимущество этого заключается в том, что вам не нужно заботиться о 64- или 32-битных целевых системах.

В C ++ Qt кажется хорошим решением, так как он четко спроектирован и предоставляет большой набор сервисов. Что мне не нравится в Qt, так это его обратная компиляция, он настолько медленный, что есть компилятор moc, компилятор, а затем ссылка, для получения исполняемого файла требуются целые века по сравнению с C # /. NET С другой стороны, вы можете столкнуться с этим даже во встроенных системах, что делает его интересным в таких случаях.

Я бы посоветовал вам хотя бы посмотреть C # / .NET и поэкспериментировать с ним, прежде чем принять решение.

...