MFC vs. WTL
От: _nn_ www.nemerleweb.com
Дата: 19.04.03 14:15
Оценка:
Какие преимущества у WTL по сравнению с MFC ?
Спасибо.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: MFC vs. WTL
От: BioUnit Россия  
Дата: 20.04.03 07:50
Оценка: 25 (3)
Здравствуйте, _nn_, Вы писали:

__>Какие преимущества у WTL по сравнению с MFC ?

__>Спасибо.

1) Общий принцип разработки. Если в MFC все основано на наследовании, причем не множественном, то в WTL упор на шаблоны и множественное наследование.

2) Использование шаблонов приводит к более гибкому использованию существующих в WTL классов.

3) Т.к. неиспользуемые в коде шаблонные функции и функции-члены шаблонных классов не компилируются, это приводит к уменьшению размеров скомпилированного объектного файла (причем, значительно).

4) Т.к. в большинстве случаев применяется не наследование, а инстанирование шаблонов, то частично пропадает необходимость в таблицах виртуальных функций, что приводит к уменьшению расхода памяти.

5) WTL четко вписывается в понятие паттернов.

6) Исходники WTL значительно меньше и (IMHO) значительней проще в понимании, чем MFC. Это дает возможность быстрее находить баги как свои, так и создателей библиотеки.
Re[2]: MFC vs. WTL
От: _nn_ www.nemerleweb.com
Дата: 20.04.03 11:46
Оценка:
Здравствуйте, BioUnit, Вы писали:

Спасибо.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: MFC vs. WTL
От: Аноним  
Дата: 21.04.03 08:28
Оценка:
Здравствуйте, BioUnit, Вы писали:

BU>Здравствуйте, _nn_, Вы писали:


__>Какие преимущества у WTL по сравнению с MFC ?

__>Спасибо.

BU>1) Общий принцип разработки. Если в MFC все основано на наследовании, причем не множественном, то в WTL упор на шаблоны и множественное наследование.


BU>2) Использование шаблонов приводит к более гибкому использованию существующих в WTL классов.


BU>3) Т.к. неиспользуемые в коде шаблонные функции и функции-члены шаблонных классов не компилируются, это приводит к уменьшению размеров скомпилированного объектного файла (причем, значительно).


BU>4) Т.к. в большинстве случаев применяется не наследование, а инстанирование шаблонов, то частично пропадает необходимость в таблицах виртуальных функций, что приводит к уменьшению расхода памяти.


BU>5) WTL четко вписывается в понятие паттернов.


BU>6) Исходники WTL значительно меньше и (IMHO) значительней проще в понимании, чем MFC. Это дает возможность быстрее находить баги как свои, так и создателей библиотеки.


Прям комунизм какой-то.

Я достаточно давно пишу на MFC. Услышал про WTL, посмотрел -- вроде бы удобно. Хочу перейти на него, но сначала хочется узнать про грабли.
Вопросы:
1). Есть ли в WTL аналоги Document/View/Frame ?
2). Есть ли аналог ON_UPDATE_COMMAND_UI ?
3). Тянет ли WTL за собой какую-нить DLL?
4). Не разбухает ли код из-за использования шаблонов?
5). Есть ли в WTL какие-нить особенно неприятные моменты (в MFC, например, меня постоянно доставала невозможность нормального совмещения Document/View и потоков)?
Спасибо.
Re[3]: MFC vs. WTL
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 21.04.03 09:30
Оценка:
Здравствуйте, Аноним, Вы писали:

[]

А>Вопросы:

А>1). Есть ли в WTL аналоги Document/View/Frame ?

Нет. Но при желании сделать не долго. К тому же в инете есть наработки. Кстати нет — громко сказано. Есть View/Frame, а документа нет.

А>2). Есть ли аналог ON_UPDATE_COMMAND_UI ?


Есть.

А>3). Тянет ли WTL за собой какую-нить DLL?


Нет.

А>4). Не разбухает ли код из-за использования шаблонов?


Только когда ты сам этого захочешь.

А>5). Есть ли в WTL какие-нить особенно неприятные моменты (в MFC, например, меня постоянно доставала невозможность нормального совмещения Document/View и потоков)?


Баги.
Но это поправимо. Мни даже приятно их вылавливать.
Re[4]: MFC vs. WTL
От: muh  
Дата: 21.04.03 10:50
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

А>5). Есть ли в WTL какие-нить особенно неприятные моменты (в MFC, например, меня постоянно доставала невозможность нормального совмещения Document/View и потоков)?


AS>Баги.

AS>Но это поправимо. Мни даже приятно их вылавливать.
Кстати,о приятном. Я где-то на rsdn брал список багов от Блудова около месяца назад. Линк посеял — не добавилось ли там чего (ну, окромя огрехов в CString)?
МВС
Люди слышат только те вопросы, на которые они в состоянии найти ответ. (с)
Re[5]: MFC vs. WTL
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 21.04.03 11:41
Оценка:
Здравствуйте, muh, Вы писали:

хъ

У меня своя уже практически WTL. Хотя совместимость сохраняется.

Блудов давно ее писал, еще для 3.0.
У меня багов исправлено намного больше. Если хочешь, могу выслать.
Re[6]: MFC vs. WTL
От: creatio Украина  
Дата: 21.04.03 12:20
Оценка:
AS>У меня багов исправлено намного больше. Если хочешь, могу выслать.
Ой! А можно и мне
Why do you call Visual Studio 'your bunny'?...
(c) one american colleague
Re[7]: MFC vs. WTL
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 21.04.03 12:29
Оценка: 48 (5)
Здравствуйте, creatio, Вы писали:

AS>У меня багов исправлено намного больше. Если хочешь, могу выслать.

C>Ой! А можно и мне

Запроста! Лови.
Re[8]: MFC vs. WTL
От: Дмитрий Наумов  
Дата: 21.04.03 13:21
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Здравствуйте, creatio, Вы писали:


AS>>У меня багов исправлено намного больше. Если хочешь, могу выслать.

C>>Ой! А можно и мне

AS>Запроста! Лови.


Еще если бы вы порекомендовали почитать что нибудь по поводу WTL — был бы очень признателен!
... << RSDN@Home 1.0 beta 6a >>
Re[9]: MFC vs. WTL
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 21.04.03 13:35
Оценка:
Здравствуйте, Дмитрий Наумов, Вы писали:

хъ

ДН>Еще если бы вы порекомендовали почитать что нибудь по поводу WTL — был бы очень признателен!


Тут есть две статьи на сайте. У меня есть две статьи — одна из них в последнем номере журнала, другая еще никуда не выложена.

Можно читать статьи на codeproject'e, но лучше самих исходников ничего нет!
Re[10]: MFC vs. WTL
От: Дмитрий Наумов  
Дата: 21.04.03 14:08
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Здравствуйте, Дмитрий Наумов, Вы писали:


AS>хъ


ДН>>Еще если бы вы порекомендовали почитать что нибудь по поводу WTL — был бы очень признателен!


AS>Тут есть две статьи на сайте. У меня есть две статьи — одна из них в последнем номере журнала, другая еще никуда не выложена.


AS>Можно читать статьи на codeproject'e, но лучше самих исходников ничего нет!


Журналы ждемс... Пока почитаю то что на сайте, а из codeproject можешь что нибудь конкретно порекомендовать?
... << RSDN@Home 1.0 beta 6a >>
Re[6]: MFC vs. WTL
От: WolfHound  
Дата: 21.04.03 15:02
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>У меня своя уже практически WTL. Хотя совместимость сохраняется.


Ага! Спец по WTL попался .
Есть такая задача: В MDI приложении главное окно лежит в одной dll'ке, а чилды лижат в других... Можно ли это заставить работать?
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: MFC vs. WTL
От: muh  
Дата: 22.04.03 03:37
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Здравствуйте, muh, Вы писали:


AS>хъ


AS>У меня своя уже практически WTL. Хотя совместимость сохраняется.


AS>Блудов давно ее писал, еще для 3.0.

AS>У меня багов исправлено намного больше. Если хочешь, могу выслать.
У меня вот тут идея возникла — отвязять WTL от ATL полностью, т.е. использовать ее только для разработки GUI, а ATL использовать в качестве traits&policy для шаблонов. VC, конечно хорошо, но такой валенок порой бывает
МВС
Люди слышат только те вопросы, на которые они в состоянии найти ответ. (с)
Re[11]: MFC vs. WTL
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 22.04.03 04:25
Оценка:
Здравствуйте, Дмитрий Наумов, Вы писали:

[]

ДН>Журналы ждемс... Пока почитаю то что на сайте, а из codeproject можешь что нибудь конкретно порекомендовать?


Если просто почитать, то вот.
А так, там в основном контролы самописные (не без багов ) и helper-classes.
Re[7]: MFC vs. WTL
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 22.04.03 04:27
Оценка:
Здравствуйте, WolfHound, Вы писали:

хъ

WH>Есть такая задача: В MDI приложении главное окно лежит в одной dll'ке, а чилды лижат в других... Можно ли это заставить работать?


А в чем трабла. Это не MFC, с ее пип... пип... состоянием модуля и пип... CWnd, который нельзя даже в другой поток передавать.
Re[7]: MFC vs. WTL
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 22.04.03 04:29
Оценка:
Здравствуйте, muh, Вы писали:

[]

muh>У меня вот тут идея возникла — отвязять WTL от ATL полностью, т.е. использовать ее только для разработки GUI, а ATL использовать в качестве traits&policy для шаблонов. VC, конечно хорошо, но такой валенок порой бывает


Это не получиться, так как вся WTL основывается на базовых классах CWindowImpl, CDialogImpl и т.д. которые принадлежат ATL.
Re[8]: MFC vs. WTL
От: PM  
Дата: 22.04.03 05:23
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Здравствуйте, creatio, Вы писали:


AS>>У меня багов исправлено намного больше. Если хочешь, могу выслать.

C>>Ой! А можно и мне

AS>Запроста! Лови.


Это ж надо было всю WTL переворошить

Могу предложить еще 2 исправления для VC7.0 — включить опцию "Force Conformance In For Loop Scope" (/Zc:forScope) и заинклудить atlmisc.h
... << RSDN@Home 1.0 beta 6a >>
Re[8]: MFC vs. WTL
От: WolfHound  
Дата: 22.04.03 05:54
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>А в чем трабла. Это не MFC, с ее пип... пип... состоянием модуля и пип... CWnd, который нельзя даже в другой поток передавать.

Трудно сказать почемуто хип рушится. Причем когда все в одном ехешнике то все нормально, а когда тоже самое разнесено по дллкам то .

Схема апликухи такая: При загрузки дллка экспортирует фабрики классов. Одна из которых создает синглитонный класс главного MDI окна. Другие создают чилдов. Вся система держится на подсчете ссылок. Соответственно чилд заводит ссылку сам на себя, а когда ему говорят закройся то он обнуляет собственную ссылку и умирает в той куче в которой родился(в каждой длл своя куча). Тем не мение чтото портится .

При использование VCL проблем не возникло...
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[9]: MFC vs. WTL
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 22.04.03 06:01
Оценка:
Здравствуйте, WolfHound, Вы писали:

[]

WH>Схема апликухи такая: При загрузки дллка экспортирует фабрики классов. Одна из которых создает синглитонный класс главного MDI окна. Другие создают чилдов. Вся система держится на подсчете ссылок. Соответственно чилд заводит ссылку сам на себя, а когда ему говорят закройся то он обнуляет собственную ссылку и умирает в той куче в которой родился(в каждой длл своя куча). Тем не мение чтото портится .


Может дело как раз в этих кучах? Может лучше использовать стандартные функции malloc и free/new и delete.

По архитектуре: зачем держать ссылку самому на себя. По идее, главное окно должно держать ссылки. Потом, зачем тебе вообще они нужны? Хочешь, чтобы все автоматом удалялось/подчищалось — убивай объект в FinalMessage, а деструктор сделать защищенным.

WH>При использование VCL проблем не возникло...


Наверняка из-за памяти проблемы.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.