Есть ли еще дело для MFC? - PullRequest
       79

Есть ли еще дело для MFC?

18 голосов
/ 23 сентября 2008

Каковы неотъемлемые особенности MFC? Почему вы выбрали бы его для нового проекта?

Ответы [ 14 ]

17 голосов
/ 23 сентября 2008

MFC был хорошим вариантом 10 лет назад. Это все еще хорошая оболочка для Win32 API, но, к сожалению, она устарела.

QT от Trolltech - лучший вариант с одним большим преимуществом - он независим от платформы. С MFC вы обречены на Windows.

10 голосов
/ 12 октября 2008

Я все еще использую MFC для всех видов приложений. MFC получил плохой рэп от своих ранних реализаций, но сейчас это отлично. Я нахожу это немного более удобным, чем WTL. Кроме того, инструменты графического интерфейса в Visual Studio уже настроены, чтобы упростить быструю разработку графических интерфейсов с помощью MFC, сопоставление элементов управления переменным, DDX и т. Д.

Для настольных приложений, которые я собираюсь широко распространять, я по-прежнему использую собственные приложения Windows, обычно в MFC, потому что мы все еще не можем рассчитывать на то, что ваши клиенты будут иметь версию .NET, которую вы используете. Если вы будете использовать установленное приложение и попросите его установить его, вы потеряете продажи, не говоря уже о головной боли обслуживания клиентов, когда они сталкиваются с проблемами при установке .NET в результате попытки запустить ваше приложение.

8 голосов
/ 23 сентября 2008

Вы могли бы перефразировать вопрос, почему вы выбрали бы C ++ вместо C # для настольного приложения. C ++ по-прежнему предлагает преимущества в скорости, которые важны для некоторых приложений (я работаю в компании, которая создает программное обеспечение для электронной торговли. Скорость имеет большое значение).

Если вы собираетесь разрабатывать настольное приложение, предназначенное только для Windows, на C ++, то MFC - самый зрелый выбор, с большим количеством свободного кода на основе MFC в Интернете и большим количеством знаний.

8 голосов
/ 23 сентября 2008

Преимущество MFC заключается в том, что он по-прежнему лучше, чем кодирование для чистого win32, и вы можете распространять собственный .exe, который не требует 23-50 МБ времени выполнения, как .Net.

Теперь, если вас беспокоят эти вещи, есть лучшие альтернативы: C ++ Builder, WxWidgets и т. Д. Но в некоторых местах не будут рассматриваться инструменты сторонних разработчиков.

7 голосов
/ 15 сентября 2011

Помимо самого win32 api, MFC является единственной основной технологией программирования Windows, которая все еще жива и здорова в 2011 году после 15 с лишним лет. Еще в 2001 году все говорили: «МФЦ мертв, теперь это все Winforms»; в 2005 году все говорили: «МФЦ мертва, теперь это весь XAML»; сейчас 2011 год, и Winforms и XAML мертвы (ОК XAML, возможно, не совсем мертв, но уже далеко от своего расцвета), а MFC все еще обновляется последними разработками (лента, расширения Aero, Win7 API и т. д.).

Конечно, это ничего не гарантирует в будущем, но за эти 15 с лишним лет будет написан лот кода MFC, и он будет использоваться в течение следующего десятилетия или десятилетий. Это, возможно, не самая красивая технология, но она хорошо понята (ее плюсы и минусы) и не является движущейся целью, как другие технологии рекламы, а это означает, что люди, которые действительно хотят добиться своей цели, могут в некотором роде положиться на нее чем на альтернативах, во всяком случае).

(то же самое относится и к C ++, кстати)

6 голосов
/ 23 сентября 2008

Вот такая возможность - представьте себе приложение, которое потребовало бы большого объема памяти, скажем, графическую программу, игру или, возможно, какое-то высокопроизводительное бизнес-приложение. Ни для кого не секрет, что .NET-приложения забирают память - в таком случае вам может понадобиться простое приложение MFC для ядра вашего приложения. Вы всегда можете загрузить и использовать компоненты .NET, элементы управления и т. Д. Через вызываемые оболочки COM или напрямую через C ++ / CLI.

Это все, что говорится - MFC это боль. Вместо этого рассмотрите WTL - вы все равно можете звонить в .NET, если вам нужно, так же, как я упоминал выше для MFC. WTL намного лучше, чем MFC: -)

4 голосов
/ 23 сентября 2008

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

3 голосов
/ 23 сентября 2008

Я думаю, что нет .. MFC проиграет в

  • Уровень абстракции
  • Время разработки
  • Время устранения неполадок
  • Кривая обучения для новых разработчиков
  • Будущее доказательство (хотя теперь это сомнительно .. с чем-то новым, появляющимся каждые 3-4 года)
  • Поиск хороших людей, которые знают свое МФЦ
  • Простые в использовании элементы управления

Единственное место, где MFC, вероятно, пробежит мимо, - это если у вас есть приложения с очень высокой производительностью, например, у вас есть вещи на экране, которые нужно перерисовывать каждые 10 мс или 1 секунду. «Управляемым» приложениям все еще не удалось преодолеть это препятствие.

MFC был важным шагом в эволюции, но теперь доступны лучшие варианты.

3 голосов
/ 23 сентября 2008

Краткий обзор новой функциональности MFC

Я слышал, у них новый контроль ленты. Если вы в такой сложности. Вот скриншот недавно созданного приложения:

image
(source: msdn.com )

Действительно, это просто обновление виджета. Так нужно ли нам больше виджетов?

2 голосов
/ 23 сентября 2008

Существующий Windows API полностью основан на Си. Если вы хотите использовать C ++ (и вам, вероятно, следует), тогда MFC - это логичный выбор, если вы хотите оставаться нативным (т.е. не использовать .NET).

MFC - это просто набор объектно-ориентированных классов поверх C API. Плюс несколько дополнительных «вспомогательных» классов, которые облегчают выполнение повседневных задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...