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

Альтернатива MFC

https://stackoverflow.com/info/149698/what-is-a-good-mfc-starting-book

Многие одобренные комментарии утверждают, что есть намного лучшие альтернативы. Я хотел бы знать, что они могут быть.

Мое основное требование состоит в том, что пользовательский интерфейс использует собственные виджеты, чтобы наше программное обеспечение автоматизации могло работать. Владельцам обращенных окон гораздо труднее управлять.

Мне не очень нравится дизайн MFC, поэтому альтернатива была бы хорошей. Только один, который я нашел, это WX, который мы уже пробовали и рассматриваем отказ. Нам нужно что-то, что не заставляет нас сражаться с кучей кросс-платформенной упаковки, о которой мы не заботимся. Мы пишем приложение Windows, и маркетинг не дает ни единого дерьма в отношении таргетинга на Mac или Linux (да, это тоже приносит мне боль).

Я немного посмотрел на .NET. Проблема в том, что я мало знаю об этом, но из того, что я могу сказать, нам нужно будет использовать С#, чтобы получить множество опций, доступных в MFC. Например, набор инструментов С++/CLI, похоже, не имеет стыковочных окон на первый взгляд. На самом деле, прямой вариант WinFroms тоже не выглядит. Похоже, нам пришлось бы сделать проект WPF, и это, кажется, совсем не то, что мы действительно хотим (и у нас будет огромная куча дерьма, чтобы учиться помимо всего лишь одного инструментария). Переход из С++ также потребует много обертывания, и мне не очень нравятся результаты, которые я видел из автоматических оберток.

Другая проблема, с которой я столкнулась с вариантом .NET, заключается в том, что у нас есть довольно привлекательное приложение (в дополнение к требованию большого количества форм). Я знаю, что вы можете получить аналогичные результаты с JIT-языками, такими как .NET, но я также знаю, что вы должны быть намного осторожнее. Это вопрос, о котором я бы хотел сейчас не беспокоиться.

Другая, и, вероятно, самая важная проблема с .NET(по крайней мере, с переключением языков) заключается в том, что у нас есть огромный запас логики интерфейса, который, хотя и должен быть API-агностиком, очень написан на С++.

Итак, каковы другие варианты? У этих людей действительно есть баллы или они просто кричат ​​от всего, что не является их любимым языком или инструментарием?

Примечание:
В чем проблема? Я сказал конкретно, что перенос на другие платформы не является даже отдаленным соображением и что у меня есть что-то, что использует собственный набор виджетов, поэтому нам не нужно полностью менять все, что использует тестирование для автоматизации продукта!!!! Кто-нибудь действительно прочитал мой вопрос?

4b9b3361

Ответ 1

Qt - единственный реальный ответ для инструментария gui на С++ на данный момент (по крайней мере, для полнофункциональных настольных приложений). Даже для чисто приложений Windows это стоит того - он также имеет отличную интеграцию с визуальной студией (получить vs-addin) и хорошо документирован

wx имеет несколько хороших точек, один из которых очень похож на используемый MFC, но с Qt, идущим в LGPL wx, было потеряно реальное преимущество.

Edit Виджеты Qt не являются родными. ОДНАКО они используют собственные API-интерфейсы для стилей, так что они неотличимы от собственных виджетов - если вы используете стили по умолчанию.

Ответ 2

Формы Windows будут отлично работать с С++/CLI. Окна также являются оберткой вокруг дескрипторов WIN32.

Нет никакой разницы в возможностях С#/Windows Forms по сравнению с С++/Windows Forms. (Они просто компилируются по-другому) Так же, как вы можете делать то же самое с С# и VB.NET...

Если вы ищете стыковочные окна, для этого есть несколько сторонних библиотек. (Некоторые из них с открытым исходным кодом, некоторые из них вы можете купить.) Из-за CLR вы можете напрямую включать сборки, написанные на другом языке.

Ответ 3

MFC не был плохим в свое время, но он немного устарел. Хорошим примером могли бы стать коллекции, которые были заменены с гораздо лучшими коллекциями STL. Однако вы спрашивали о материалах GUI. Там WTL (библиотека шаблонов Windows), которая, я считаю, теперь открыта. Гораздо светлее, чем MFC, но он предназначен для работы одинаково - например. Большинство классов имеют одинаковые имена и имена методов.

С другой стороны, я нашел документацию относительно скудную, и она не работает с мастерами Visual Studio. Это может быть моей проблемой, хотя - заставить его работать с мастерами VS было бы очень важно ИМХО.

Ответ 4

Я нахожусь примерно в том же положении: большое приложение, собственный код, используя MFC для front-end. Я не вижу никаких убедительных альтернатив или причин переключиться на что-то еще.

Сказав это, позвольте мне высказать свое мнение. Если бы я делал новый проект, который должен был сохранить/наследовать много собственного кода, я бы подумал о попытке сделать интерфейс WPF с главным образом основным (С++/CLI) основным приложением. Это было сделано с Visual Studio 2010, и это в основном перформанс, поэтому, по крайней мере, это возможно. WPF имеет некоторые преимущества пользовательского интерфейса, и, возможно, было бы легче работать и тестировать (с точки зрения автоматизации), поскольку это код CLR. Я не уверен, что это будет стоить инвестиций и кривой обучения, но это альтернатива, которую я бы рассмотрел для современного приложения с чистой ОС Windows с большим количеством нативного кода.

Надеюсь, что это поможет.

Ответ 5

Чтобы предложить что-то, чего я не видел в других ответах:

Из-за его звука единственной причиной для необходимости использования собственных средств управления является программное обеспечение автоматизации. И единственная причина, по которой нужно, чтобы это программное обеспечение автоматизации работало, - это тестирование. Я бы предположил, что некоторые серии автоматических тестов используются для обеспечения того, чтобы программное обеспечение работало по назначению.

Если это так, то вот что нужно учитывать: в области С#/WPF, называемой Model-View-ViewModel, существует достаточно популярный шаблон дизайна. Не вдаваясь в подробности, основная идея состоит в том, что вы можете отделить фактические элементы управления графическим интерфейсом (вид) от кода, который обрабатывает взаимодействие этих элементов с остальной бизнес-логикой приложения. Этот код является так называемым ViewModel. Помимо всего прочего, это позволяет проектировать, где эта ViewModel (и вся остальная логика приложения) может быть протестирована с помощью типичных методов тестирования единиц без фактического использования элементов управления графическим интерфейсом.

Таким образом, любое тестирование программного обеспечения автоматизации используется для потенциально может быть заменено прямым модулем тестирования.

Однако мой собственный опыт в этой области не настолько обширен, насколько мне бы хотелось. Поэтому, если вы считаете это вообще, я настоятельно рекомендую дальнейшие исследования. Для начала, такие термины, как "Model-View-ViewModel" и "MVVM", должны в конечном итоге дать более подробные обсуждения этой части.

Ответ 6

Я видел, что Qt используется довольно широко. Я лично не использовал Qt, но я вижу много вопросов об этом, гораздо больше, чем wXwidgets или MFC. Я бы начал с этого.