Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> чистый WinApi удобнее MFC 
:(
    Опции темы
En_t_end
Дата 24.4.2005, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Пришлось тут не давно заняться написанием проги с использованием WinApi. Раньше для создания приложений под win юзал MFC, но как ни странно с WinApi работать на прямую во много раз легче, чем юзать классы MFC, да и код получается более менее понятным. Ты видишь что за чем идет, тебя не беспокоят врубленные по дефолту бесполезные ресурсоемкие фичи, ты просто прогишь.
Мой вывод: чистый WinApi удобнее чем классовая оболочка MFC.
Да и ещё... о чем интересно думали мелкомягкие, когда делали в MFC мапы сообщений ? крайне неудобно это, удачнее просто использовать цикл с выборкой нужной инфы.
У кого какие мысли ?
PM MAIL ICQ Skype GTalk Jabber   Вверх
Alastis
Дата 24.4.2005, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 15.11.2004
Где: Казахстан, Астана

Репутация: 4
Всего: 10



Не могу согласиться... мне кажется утверждение, что WinApi удобнее чем MFC верно только для конкретных задач, в частности, таких как системное программирование... да и то, если приложение довольно громоздкое, то придется писать некую обертку над WinApi для комфортного программирования... Хотя у MFC очень много недостатков, согласен и смерть MFC - это лишь дело времени. И лично я для тех задач, в которых MFC удобнее WinApi предпочитаю VCL:)


--------------------
Прости, что я говорю, когда ты меня перебиваешь.
PM MAIL WWW ICQ   Вверх
En_t_end
Дата 24.4.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Да для работы с "Документ-представление" довольно трудно юзать чистый WinApi, но в остальных случаях он просто идеально подходит.
PM MAIL ICQ Skype GTalk Jabber   Вверх
chipset
Дата 24.4.2005, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Проблема в том, что этих случаев так мало... smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
rsm
Дата 24.4.2005, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: 2
Всего: 62



Я шел в полностью противоположном направлении - писал несколько лет на WinApi и VCL и лишь недавно заинтересовался MFC. В процессе ознакомления (а в последствии - и более углубленного изучения) сделал для себя следующие выводы:

1. В стандартной поставке MFC имеется весьма ограниченный набор компонентов. Сравнив стандартный набор компонентов из VС++.NET 2003 и из WinAsm Studio я с удивлением обнаружил, что первая среда разработки содержит всего на 2 smile компонента больше! Причем эти компоненты далеко не самые ходовые - календарь и "супер-комбобокс".

Разумеется существует огромное количество других компонентов (например тут) но все они написаны сторонними разработчиками что несколько озадачивает - сильно сомневаюсь что за все N лет существования MFC в Microsoft'e не нашлось ресурсов чтобы сделать побольше компонентов (хотя бы на уровне VCL).

2. Код, выдаваемый "мастером", порой весьма сложен для понимания. Например уже упомянутые мапы сообщений - простое ветвление сообщений гораздо нагляднее и удобнее.

3. Код, который пишешь сам, так же далеко не всегда прост и очевиден. Особенно "нравится" ручное создание переменных для каждого контрола - чрезвычайно "удобно" и "интуитивно". Часто бывает проще написать все родными WinApi чем извращаться с тем что наворочено MFC.

4. MFC слишком низкоуровневая библиотека. Почему например нельзя добавлять страницы в TabControl сразу во время проектирования интерфейса и кидать на них контролы? Вместо этого приходится извращаться стандартным способом (подгрузкой окон диалогов, см. MSDN).

Общий вывод: суммируя изложенные выше качества приходим в выводу, что MFС без дополнительных компонентов от сторонних разработчиков очень мало на что способна по сравнению с "голым" WinApi, не говоря уж о VCL.

Отвечая на негласный вопрос "а что же юзать?" можно сказать следующее:

- если время особо не поджимает и устраивает стандартный интерфейс (без всяких изращений типа разноцветных кнопок, анимированных меню и прочих поющих бирюзовых слоников), то лучше всего будет взять хороший редактор ресурсов (например упомянутный выше WinAsm Studio) и писать на WinApi;

- если время сильно поджимает и\или нужен нестандартный интерфейс тогда лучше всего будет воспользоваться VCL.

Это сообщение отредактировал(а) rsm - 24.4.2005, 23:18
PM MAIL   Вверх
AISIN
Дата 24.4.2005, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: нет
Всего: 1



Сам .exe файл в MFC получается больше!
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
Fire-Plug
Дата 25.4.2005, 04:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 15.3.2005

Репутация: -1
Всего: 0



Цитата(En_t_end @ 24.4.2005, 14:32)
о чем интересно думали мелкомягкие, когда делали в MFC мапы сообщений ? крайне неудобно это, удачнее просто использовать цикл с выборкой нужной инфы

Идея-то в действительности простая - связать идентификатор сообщения с указателем на ф-цию-обработчиком соотв. события. Если подумать о том, какие варианты решения возможны, с учетом что требовалось разработать нек-рый framework, к-рый можно было бы сравнительно несложно приспособить для конкретного Windows-приложения, то окажется, что их, т.е. решений, не так уж много.
Это значит, что требуется:
1) динамический контейнер, в к-рый нужно добавлять элементы (т.е. указатели на ф-ции-обработчики событий) в произвольном порядке, ключом к-рого явл. в общем случае натуральное число (т.е. идентификатор сообщения);
2) обеспечить эффективный поиск элемента в контейнере по ключу-идентификатору сообщения.
Вопрос, какой контейнер наиболее полно удовлетворяет данным требованиям?
Вот и вылезла-то она, т.е. "мапа", к-рая скорее всего реализована как двоичное дерево, производительность поиска в к-ром - O(log 2 (n)).
Если бы мне потребовалось бы разработать некий функциональный framework, то в его основу я так же положил бы "мапу" указателей на ф-ции или еще лучше классов-функторов, в к-рой произвольный элемент разыскивается по его идентификатору.
Ну, так чем неудобна "мапа"? Что, std::map - тоже неудобна?
ЗЫ: Чтобы быть правильно понятым, также считаю, что MFC - наиболее уродливая библиотека классов среди всех тех, что когда-либо мне встречались.

--------------------
Объясни другому - поймешь сам (Народная примета)
PM MAIL   Вверх
En_t_end
Дата 25.4.2005, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Fire-Plug 
Цитата
Если бы мне потребовалось бы разработать некий функциональный framework, то в его основу я так же положил бы "мапу"

|
^
Цитата
Чтобы быть правильно понятым, также считаю, что MFC - наиболее уродливая библиотека классов среди всех тех, что когда-либо мне встречались.

Вот и взаимосвязь.

ЗЗЫ я бы предложил вариант со списком, так лично мне удобно smile В голове содержиться массив int. То есть чтобы найти обработчик, надо просмотреть массив на предмет подходящего номера сообщения. Идентификатор же подходящего члена будет номер члена в списке. То есть сразу переходим к нужному члену списка и обрабатываем...
PM MAIL ICQ Skype GTalk Jabber   Вверх
Nastya
Дата 25.4.2005, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 5
Всего: 44



Попробуй WTL, мне понравилось, с одной стороны совершенно APIпрозрачно, с другой все-таки ООП smile


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
rsm
Дата 25.4.2005, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: 2
Всего: 62



Nastya
Цитата
Попробуй WTL, мне понравилось

Тот же шарик только в профиль smile
PM MAIL   Вверх
chipset
Дата 27.4.2005, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



ИМХО, MFC скоро отомрёт за ненадобностью, в перспективе. Нет, я не спорю, отдельные задачи на нём будут решаться, но скорее всего часть программеров уйдет в Java/.NET а часть приверженная плюсам пойдет в Qt/wxWidgets - надежду всех прогрессивных плюсников smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.