MFC: хорошо или плохо?
Смотря для чего
Я так понимаю, MFC - это ОО-обёртка для Windows API, чтобы не нужно было указывать все 33 аргумента функциям Windows API, и т. д. В общем сделать такую ОО-вещь как Windows и впрямь ОО (для программиста).
Плюс - быстрая
Минус - не слишком удобная
у MFC есть большой и жирный минус - ее больше не поддерживают (не развивают)
Какой же это минус? Это плюс! Поделом этой MFC.
mfc -это плохо, так как имеет слишком сложную структуру , в следствии чего ее благополучно забывают
да ладно, сложную... полностью повторяет часть WIN32 API
Есть еще WTL, но официально не поддерживается.
Ботать MFC сегодня точно не следует.
Согласен с . Представлять нужно как все происходит до уровня Win32, много деталей. Пока занимаешься одним, теряешь знания о деталях в другом.
как раз наоборот хорошо: многие вещи скрываются, но если чего не хватает, легко воткнуть чисто winapi-шный код
Все равно могло быть ООПшности больше.
в подавляющем большинстве случаев низкоуровневое программирование на winAPI не нужно,так как оно чревато ошибками, а вот пользоваться хорошо оттестированными высокоуровневыми структурами гораздо приятней
Так же как и в WIN32 API
Какими, типа грида? Ну вроде полно всяких ActiveX. А вообще, я не фанат MFC
Визарды в мфц отстой. Столько дерьма продуцируют.
В MS нашли решение. Причем оно лучше, чем это можно было сделать 10лет назад
ну пиши без визардов все макросы вроде задокументированы
Я пишу без мфц
Qt и GTK2 - вот это удобные способы написания GUI.
GTK не знаю, но с QT явно дальше пошли чем с MFC. Просто на чистых С++ сложно, что-либо сделать нормальное. GUI фреймворк хорошо строить на компонентах. А для этого нужно развитая поддержка рефлексии и метаданных.
хм... по-моему в Windows Forms рефлексия не особо используется...
Как это не используется? Большая часть кода обеспечивает design-time поддержку, а там все на рефлексии. Архитектура довольно простая, писать нужно немного за счет метаданных и рефлексии. Можно наделать кучу контролов, с помощью которых можно в дизайнере очень быстро, с минимум кода, ваять сложный интерфейс. Это объясняет то, что рынок готовых контролов очень развит.
Вопрос чисто из интереса: много ли вы их покупали?
Мне много рекламы приходит
вполне можно и без дизайнера прогать
DevExpress почти весь, еще ASP.NET-овские контролы, но не много
Весь DataBinding на рефлексии сделан.
свойство DataSource все контролы (которые работают с коллекциями) поддерживают.
Контролы, что входят в состав Winforms 1.0, довольно убогие, поэтому многие покупают. Все мои знакомые, которые работают в .NET проектах, рассказывают, что они пользуются теми или иными купленными контролами, особенно всякими дата гридами.
и как оно там используется?
Что значит, как?
Ну это ж новое в .NET, так?
ну в чем там состоит использование рефлексии? Может ты ее с поздним связыванием путаешь, динамическим приведением типов?
DisplayMember
ValueMember
а вот Data binding:
asp.net-овский DataBinder тоже умеет работать (читать поля) как с DataSet-ами, так и с простыми объектами.
textBox2.DataBindings.Add(new Binding("Text", new Rectangle "Left";
там, например, связывается свойство контрола со свойством объекта объектного источника данных по именам. Соответственно, потом через рефлексию будет считываться значение свойства объекта и запихиваться в свойство контрола.
Когда я полчаса искал в небольшой проге то место, где сохраняется документ, не нашёл, попросил поискать знакомого и он таки нашёл за 15 минут при помощи дебаггера, я понял, что мфц - говно.
Я это понял сразу как увидел код, вываленный мне визардом плюс посмотрел на объектное дерево. Логично не засыпать программиста кучей говнокода. Я пользуюсь (пока что) билдером для написания гуи. В нём хоть и неидеальные контролы, идущие в комплекте, зато дерьма нет. Application->Initialize Application->Run Application->CreateForm(..) - и всё, что он тебе кладёт в винмайн. Это - красиво и интуитивно понятно. Тут говорили про и другие альтернативы мфц. Можно немного подробнее о них?
MFC это программирование Win32 API, а C Builder это целый GUI фреймворк. Зачем сравнивать. Да и код MFC не такой кривой, и пример Fj ни о чем не говорит, так как сохранение документа обычно делается стандартно в MFC через сериализацию, перегрузкой CDocument::Serialize или что-то в этом роде.
Вообще тема обсуждения - мфц. А сейчас дискуссия идёт про написание гуи.
А я и говорю про MFC, что оно не так плохо. Просто как Darkgray правильно сказал, MFC устаревшая технология.
В MFC нет говнокода. Если ты не можешь разобраться в довольно простой схеме работы - это ещё ничего не значит. Любой интерфейс спокойно и размеренно ваяется на MFC без каких-либо проблем. Другое дело, что это как бы устаревшая технология. Есть способы создавать GUI более быстро.
Согласен. Я не пытался разбираться а отверг его по первому впечатлению.
Оставить комментарий
Vladislav177Rus
Хотелось бы услышать аргументы обоих сторон