Динозавры! Ауууу!!!

 
1 2 3 4 5 6

.cpp

втянувшийся

Использует ли кто Windows API в "чистом" виде? Или нет? Почему?
 
RU [Slowspeed] #09.06.2003 16:01
+
-
edit
 
Что значит использовать? Я от все под Windows пишу с использванием MFC, где MFC кончается, вызываю функцию WinAPI. Использую я WinAPI или нет?
 

.cpp

втянувшийся



Да дело в том, что когда я начинал писать под Windows, не было еще не только MFC, С++ еще не было. Когда MFC появился, я почитал про них, и они мне не понравились - громоздкие, негибкие конструкции. А потом стал замечать, что многие, использующие MFC понятия не имеют о событийном механизме Windows (messages, message lopp). Я уже молчу о ява-программерах. И стало мне грустно... Поэтому и спрашиваю: есть ли еще Динозавры, способные корректно подменить оконную функцию стандартного контроля и написать свой message lopp с обработкой в нем недоступных в оконной функции системных сообщений?
 
RU [Slowspeed] #09.06.2003 18:29
+
-
edit
 


>Да дело в том, что когда я начинал писать под Windows, не было еще не только MFC, С++ еще не было.


Гм. Боюсь тогда Windows-то не было :-).



Когда MFC появился, я почитал про них, и они мне не понравились - громоздкие, негибкие конструкции.


Тут я не согласен. ИМХО в общем программы на C++ более гибкие, расширяемые, понятные и пр чем на Pure C (естетсвенно, речь идет о нормально написанных программах,). Что катасется MFC: если архитектура документ/представление (единственное ИМХО "негибкое" средство MFC) не подходит под конкретное приложение, то не надо ее использовать - в MFC полно других средств, делающих работу удобнее - универсальные классы (строки, файлы, архивы и пр), классы графических объектов GDI, механизмы DDX/DDV, дофига всего хорошего. Опять-же ClassWizard, обработчики в виде методов классов.



А потом стал замечать, что многие, использующие MFC понятия не имеют о событийном механизме Windows (messages, message lopp). Я уже молчу о ява-программерах. И стало мне грустно...


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




Поэтому и спрашиваю: есть ли еще Динозавры, способные корректно подменить оконную функцию стандартного контроля и написать свой message lopp с обработкой в нем недоступных в оконной функции системных сообщений?




Ну SetWindowLong(...GWL_WNDPROC...) или что-то в этом духе. Это же все нетрудно на самом деле. В пределах Петзольда и Рихтера.

Первые два года я программировал под Windows используя Pure C/WinApi, но потом освоил MFC и параллельно сделал пару проектов на C++. И теперь использую почти исключительно C++/MFC. Не знаю, что заставило бы меня отказаться от них.
 
US ComputerMage #09.06.2003 18:52
+
-
edit
 

ComputerMage

втянувшийся



>>Да дело в том, что когда я начинал писать под Windows, не было еще не только MFC, С++ еще не было.

Slowspeed>Гм. Боюсь тогда Windows-то не было :-).


>Когда MFC появился, я почитал про них, и они мне не понравились - громоздкие, негибкие конструкции.

Slowspeed>Тут я не согласен. ИМХО в общем программы на C++ более гибкие, расширяемые, понятные и пр чем на Pure C (естетсвенно, речь идет о нормально написанных программах,). Что катасется MFC: если архитектура документ/представление (единственное ИМХО "негибкое" средство MFC) не подходит под конкретное приложение, то не надо ее использовать - в MFC полно других средств, делающих работу удобнее - универсальные классы (строки, файлы, архивы и пр), классы графических объектов GDI, механизмы DDX/DDV, дофига всего хорошего. Опять-же ClassWizard, обработчики в виде методов классов.


> А потом стал замечать, что многие, использующие MFC понятия не имеют о событийном механизме Windows (messages, message lopp). Я уже молчу о ява-программерах. И стало мне грустно...

Slowspeed>Ну, многие не имеют, а многие и имеют. Не надо за всех говорить. Яву я кстати тоже не люблю.


>
Slowspeed>Поэтому и спрашиваю: есть ли еще Динозавры, способные корректно подменить оконную функцию стандартного контроля и написать свой message lopp с обработкой в нем недоступных в оконной функции системных сообщений?



>
Slowspeed>Ну SetWindowLong(...GWL_WNDPROC...) или что-то в этом духе. Это же все нетрудно на самом деле. В пределах Петзольда и Рихтера.
Slowspeed>Первые два года я программировал под Windows используя Pure C/WinApi, но потом освоил MFC и параллельно сделал пару проектов на C++. И теперь использую почти исключительно C++/MFC. Не знаю, что заставило бы меня отказаться от них.



Я с 89 года тоже юзал WinAPI, с 91 года попробовал написать свою обвязку на классах, потом решил что у Борланда она лучше. В 94 переполз с Борланда на Вижуал Цэ, попробовал МФЦ, проплювался, но деваться было некуда,
продолжал писать. Сейчас мне больше нравится на Си Билдере писать чем на Вижуал Цэ. Или на крайняк свои
классы опять в обвязку накатать. Микрософт всегда всё усложняет и пишет через задницу.

Быть или не быть?!
Вот только у кого спросить?!
 
RU [Slowspeed] #09.06.2003 19:18
+
-
edit
 
Ну, какая библиотека классов лучше и почему MS все пишет через задницу - это уже другие вопросы. Так или иначе по моему менению отказываться от библиотек классов и C++ неразумно и программы просто от того, что их не использовать лучше не станут. Кроме того, не все, кто их используют не знают как работает Windows. И, даже осмелюсь предположить, что не все, кто умеет подменить оконную функцию хорошо это себе представляют - в Windows много более сложных вещей.
 

Lerm

втянувшийся
Опять тех кто работает с Java обижают... :angry:
Ну пишу я без MFC - не нравится оно мне...
You live and learn. Or you don't live long.  
+
-
edit
 

Sokrat

модератор

.cpp>А потом стал замечать, что многие, использующие MFC понятия не имеют о событийном механизме Windows (messages, message lopp). Я уже молчу о ява-программерах.

И зачем ява-программеру иметь понятие о событийном механизме Windows?.. :blink:

 
RU asoneofus #10.06.2003 00:13
+
-
edit
 

asoneofus

старожил

А зачем ява-программеру вообще иметь понятие о чем-либо :D ?
"... аще где в книге сей грубостию моей пропись или небрежением писано, молю Вас: не зазрите моему окаянству, не кляните, но поправьте, писал бо не ангел Божий, но человек грешен и зело исполнен неведения ..."  
RU Владимир Малюх #10.06.2003 08:16
+
-
edit
 
Lerm>Ну пишу я без MFC - не нравится оно мне...

Ну что за детский сад, нравится- ненравится? Работать нужно инструментом адекватным решаемой задаче. И на сегодня писать под виндами без MFC - просто делать лишнюю работу и делать ее дольше. Непрофессионально. А Борланд, увы ему, свои позиции с OWL сдал, хотя в свое время явно был впереди.
Maschinen muessen "idiotensicher" werden  

TEvg

аксакал

админ. бан
>И на сегодня писать под виндами без MFC - просто делать лишнюю работу и делать ее дольше.

Можно писать c VCL ..
 
+
-
edit
 

timochka

опытный

.cpp>>А потом стал замечать, что многие, использующие MFC понятия не имеют о событийном механизме Windows (messages, message lopp). Я уже молчу о ява-программерах.

>И зачем ява-программеру иметь понятие о событийном механизме Windows?.. :blink:

Смех смехом, но иногда приходится. Простой жава програмер (не интересовавшийся как Винда работает) впадает во временный ступор когда ему расказываешь как оно на самом деле то работает. :-)

Как правило такие потребности возникают когда надо спортировать Вин приложение на Жабу.

Сразу скажу что сам на Жабе не пишу по историческим соображениям, а балуюсь .Net'иной.
 

.cpp

втянувшийся



Slowspeed>Гм. Боюсь тогда Windows-то не было :-).


Был Windows-2 :-).
 
RU asoneofus #10.06.2003 10:34
+
-
edit
 

asoneofus

старожил

А можно на Qt :) И не парить мозги :D

Кстати, Владимир, с чего это вы решили, что MFC безальтернативна? :) ИМХО, это неплохое средство, но не лучшее.
"... аще где в книге сей грубостию моей пропись или небрежением писано, молю Вас: не зазрите моему окаянству, не кляните, но поправьте, писал бо не ангел Божий, но человек грешен и зело исполнен неведения ..."  
+
-
edit
 

timochka

опытный

asoneofus>А можно на Qt :) И не парить мозги :D

Кстати, Владимир, с чего это вы решили, что MFC безальтернативна? :) ИМХО, это неплохое средство, но не лучшее.

Ну у мелкомягких есть еще ATL :-) Хотя стандартный далог писаный на ATL выглядит немного странно поначалу, а потом привыкаешь.
 
RU asoneofus #10.06.2003 11:02
+
-
edit
 

asoneofus

старожил

Хе. в этом смысле мне линь больше нравится: гибчее и обильней. Ассемблег гуёв - мотиф|лессиф... и поехало :)
"... аще где в книге сей грубостию моей пропись или небрежением писано, молю Вас: не зазрите моему окаянству, не кляните, но поправьте, писал бо не ангел Божий, но человек грешен и зело исполнен неведения ..."  
RU Владимир Малюх #10.06.2003 11:06
+
-
edit
 
>>И на сегодня писать под виндами без MFC - просто делать лишнюю работу и делать ее дольше.

TEvg>Можно писать c VCL ..

Можно, но все равно будет не так эффективно. Связка VC+MFC+MSDN+SoursSafe делает работу прогреммера весьма комфортной, если конечно его не тревожат религиозные мотивы отношений к MS.
Maschinen muessen "idiotensicher" werden  
RU Владимир Малюх #10.06.2003 11:17
+
-
edit
 
asoneofus> Кстати, Владимир, с чего это вы решили, что MFC безальтернативна? :) ИМХО, это неплохое средство, но не лучшее.


Я и не говрю, что безальтернативна. Устал я уже в разных топиках толковать про "лучшесть". В чем ксатит критерий? Не надо нам "ЛУЧШЕЕ ФОРЕВА", нам нужно удобно быстро и качественно писать свой софт, иметь подробную документацию на билиотеки и систему, иметь адекватное инструментальное окружение (редактор, компилятор, отладчик). Можно это все сделать средствами не от MS? Да можно конечно. Только зачем морочиться с отбором, проверкой, стыковкой, настройкой, думать - будет ли оно поддержано через три года титп итд, если нам софт писать надо сейчас, вчера и завтра а инструментарий от MS покрывает наши потребности полностью? И нам нужно делать софт свой а нед ля дяди, кторый живет и развивается годами, а не тот что сдал и забыл. Тратить каждые пару лет кучу времени на освоение еще одного "самого лучшего"? Нет уж, не за мои деньги.

Ну и последнее - если уж кто имеет большую возхможность интеграции MFC (или что там ей придет на смену или альтернативным библиотекам) с ОС - то явно сами MSовцы.


А нравится нам линукс или не нравится - ПОФИГУ. В нашей отрасли (CAD/CAM/CAE/PDM/PLM) сейчас типовая ОС -Windows NT/2000/XP. ВОт и все. Другое наших потребителяей и смежников по целому ряду причин не интересует. Посему и вопроса такого нет как класса, в принципе. И дело не в религии, а в особеностях отрасли, не более того.
Maschinen muessen "idiotensicher" werden  
Это сообщение редактировалось 10.06.2003 в 11:55
BG Реконструктор #10.06.2003 12:23
+
-
edit
 
У MFC серёзные проблеммы с многозадачностью. Если вам надо писать прогу с несколькими потоками + GUI, лучше MFC не трогать. Альтернатива - WTL, однако работа с ним сложнее, если сравнивать с MFC.
 
BG Реконструктор #10.06.2003 12:25
+
-
edit
 
А, и кроме того, некоторое часто используемые API ф-ии не имеют MFC отрожения, напр. Get/SetWindowLong, Get/SetProp и т.д.
 
+
-
edit
 

timochka

опытный

Resurrector>У MFC серёзные проблеммы с многозадачностью. Если вам надо писать прогу с несколькими потоками + GUI, лучше MFC не трогать. Альтернатива - WTL, однако работа с ним сложнее, если сравнивать с MFC.

Трогать можно, но MFC должна остаться в одном потоке (ГУЕвом). А остальные потоки pure API и все работает и нет утечек. Ну и синхронизация доступа делается самостоятельно на чистом АПИ.

Resurrector>А, и кроме того, некоторое часто используемые API ф-ии не имеют MFC отрожения, напр. Get/SetWindowLong, Get/SetProp и т.д.

Ну это совсем не проблема, так как GetSafeHwnd() никто не отменял.
 
RU [Slowspeed] #10.06.2003 13:05
+
-
edit
 
Resurrector>У MFC серёзные проблеммы с многозадачностью. Если вам надо писать прогу с несколькими потоками + GUI, лучше MFC не трогать.

Очень смелое утверждение. Недавно я написал программу с использованием MFC, в которой было и GUI и одновременно работало более 1000 потоков - симулятор большого числа запросов по SSL. Я не испытывая при этом никаких неудобств.
Более того, все более менее большие программы, написанные мною за последние 5 лет как правило создавали вторичные потоки.
Так что хотелось бы, чтобы Вы подробнее раскрыли свою мысль о проблемах MFC и многозадачности (многопоточности).
 
BG Реконструктор #10.06.2003 13:16
+
-
edit
 


timochka>Ну это совсем не проблема, так как GetSafeHwnd() никто не отменял.



Хехе, тогда же зачем использовать MFC? Ради Визардов? :D
 
RU Владимир Малюх #10.06.2003 13:16
+
-
edit
 
Resurrector>У MFC серёзные проблеммы с многозадачностью. Если вам надо писать прогу с несколькими потоками + GUI, лучше MFC не трогать.


Да ну? А мужики-то и не знают (с) :blink: И как это у нас софт работает?
Maschinen muessen "idiotensicher" werden  
BG Реконструктор #10.06.2003 13:29
+
-
edit
 


Slowspeed>Очень смелое утверждение. Недавно я написал программу с использованием MFC, в которой было и GUI и одновременно работало более 1000 потоков - симулятор большого числа запросов по SSL. Я не испытывая при этом никаких неудобств.
Slowspeed>Более того, все более менее большие программы, написанные мною за последние 5 лет как правило создавали вторичные потоки.
Slowspeed>Так что хотелось бы, чтобы Вы подробнее раскрыли свою мысль о проблемах MFC и многозадачности (многопоточности).



Конечно, если быть очень внимательным, проблем не будет. :) Вопрос выбора - либо быть внимательным и подозрительным польюзуя визарды, либо не пользовать визарды и не циклить над тупыми проблемами.


Вот реальный пример, который ломает MFC:
ULONG Thread_CrashMFC(CDialog* pDlg)

{

Sleep(1000);

pDlg->DestroyWindow();

return 0;

}

void CRererDlg::OnCrashMFC() 

{

CDialog* pDlg = new CDialog;

[html_font size="3" ]

pDlg->Create(IDD_DIALOG1, this);

pDlg->ShowWindow(SW_SHOW);

DWORD id;

CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread_CrashMFC, (void*)pDlg, 0, &id);

}

 
1 2 3 4 5 6

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru