Здравствуйте, _nn_, Вы писали:
__>Какие преимущества у WTL по сравнению с MFC ? __>Спасибо.
1) Общий принцип разработки. Если в MFC все основано на наследовании, причем не множественном, то в WTL упор на шаблоны и множественное наследование.
2) Использование шаблонов приводит к более гибкому использованию существующих в WTL классов.
3) Т.к. неиспользуемые в коде шаблонные функции и функции-члены шаблонных классов не компилируются, это приводит к уменьшению размеров скомпилированного объектного файла (причем, значительно).
4) Т.к. в большинстве случаев применяется не наследование, а инстанирование шаблонов, то частично пропадает необходимость в таблицах виртуальных функций, что приводит к уменьшению расхода памяти.
5) WTL четко вписывается в понятие паттернов.
6) Исходники WTL значительно меньше и (IMHO) значительней проще в понимании, чем MFC. Это дает возможность быстрее находить баги как свои, так и создателей библиотеки.
Здравствуйте, 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 и потоков)?
Спасибо.
[]
А>Вопросы: А>1). Есть ли в WTL аналоги Document/View/Frame ?
Нет. Но при желании сделать не долго. К тому же в инете есть наработки. Кстати нет — громко сказано. Есть View/Frame, а документа нет.
А>2). Есть ли аналог ON_UPDATE_COMMAND_UI ?
Есть.
А>3). Тянет ли WTL за собой какую-нить DLL?
Нет.
А>4). Не разбухает ли код из-за использования шаблонов?
Только когда ты сам этого захочешь.
А>5). Есть ли в WTL какие-нить особенно неприятные моменты (в MFC, например, меня постоянно доставала невозможность нормального совмещения Document/View и потоков)?
Баги.
Но это поправимо. Мни даже приятно их вылавливать.
Здравствуйте, Alexey Shirshov, Вы писали:
А>5). Есть ли в WTL какие-нить особенно неприятные моменты (в MFC, например, меня постоянно доставала невозможность нормального совмещения Document/View и потоков)?
AS>Баги. AS>Но это поправимо. Мни даже приятно их вылавливать.
Кстати,о приятном. Я где-то на rsdn брал список багов от Блудова около месяца назад. Линк посеял — не добавилось ли там чего (ну, окромя огрехов в CString)?
МВС
Люди слышат только те вопросы, на которые они в состоянии найти ответ. (с)
Здравствуйте, Alexey Shirshov, Вы писали:
AS>Здравствуйте, creatio, Вы писали:
AS>>У меня багов исправлено намного больше. Если хочешь, могу выслать. C>>Ой! А можно и мне
AS>Запроста! Лови.
Еще если бы вы порекомендовали почитать что нибудь по поводу WTL — был бы очень признателен!
Здравствуйте, Alexey Shirshov, Вы писали:
AS>Здравствуйте, Дмитрий Наумов, Вы писали:
AS>хъ
ДН>>Еще если бы вы порекомендовали почитать что нибудь по поводу WTL — был бы очень признателен!
AS>Тут есть две статьи на сайте. У меня есть две статьи — одна из них в последнем номере журнала, другая еще никуда не выложена.
AS>Можно читать статьи на codeproject'e, но лучше самих исходников ничего нет!
Журналы ждемс... Пока почитаю то что на сайте, а из codeproject можешь что нибудь конкретно порекомендовать?
Здравствуйте, Alexey Shirshov, Вы писали:
AS>У меня своя уже практически WTL. Хотя совместимость сохраняется.
Ага! Спец по WTL попался .
Есть такая задача: В MDI приложении главное окно лежит в одной dll'ке, а чилды лижат в других... Можно ли это заставить работать?
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Alexey Shirshov, Вы писали:
AS>Здравствуйте, muh, Вы писали:
AS>хъ
AS>У меня своя уже практически WTL. Хотя совместимость сохраняется.
AS>Блудов давно ее писал, еще для 3.0. AS>У меня багов исправлено намного больше. Если хочешь, могу выслать.
У меня вот тут идея возникла — отвязять WTL от ATL полностью, т.е. использовать ее только для разработки GUI, а ATL использовать в качестве traits&policy для шаблонов. VC, конечно хорошо, но такой валенок порой бывает
МВС
Люди слышат только те вопросы, на которые они в состоянии найти ответ. (с)
[]
muh>У меня вот тут идея возникла — отвязять WTL от ATL полностью, т.е. использовать ее только для разработки GUI, а ATL использовать в качестве traits&policy для шаблонов. VC, конечно хорошо, но такой валенок порой бывает
Это не получиться, так как вся WTL основывается на базовых классах CWindowImpl, CDialogImpl и т.д. которые принадлежат ATL.
Здравствуйте, Alexey Shirshov, Вы писали:
AS>Здравствуйте, creatio, Вы писали:
AS>>У меня багов исправлено намного больше. Если хочешь, могу выслать. C>>Ой! А можно и мне
AS>Запроста! Лови.
Это ж надо было всю WTL переворошить
Могу предложить еще 2 исправления для VC7.0 — включить опцию "Force Conformance In For Loop Scope" (/Zc:forScope) и заинклудить atlmisc.h
Здравствуйте, Alexey Shirshov, Вы писали:
AS>А в чем трабла. Это не MFC, с ее пип... пип... состоянием модуля и пип... CWnd, который нельзя даже в другой поток передавать.
Трудно сказать почемуто хип рушится. Причем когда все в одном ехешнике то все нормально, а когда тоже самое разнесено по дллкам то .
Схема апликухи такая: При загрузки дллка экспортирует фабрики классов. Одна из которых создает синглитонный класс главного MDI окна. Другие создают чилдов. Вся система держится на подсчете ссылок. Соответственно чилд заводит ссылку сам на себя, а когда ему говорят закройся то он обнуляет собственную ссылку и умирает в той куче в которой родился(в каждой длл своя куча). Тем не мение чтото портится .
При использование VCL проблем не возникло...
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
[]
WH>Схема апликухи такая: При загрузки дллка экспортирует фабрики классов. Одна из которых создает синглитонный класс главного MDI окна. Другие создают чилдов. Вся система держится на подсчете ссылок. Соответственно чилд заводит ссылку сам на себя, а когда ему говорят закройся то он обнуляет собственную ссылку и умирает в той куче в которой родился(в каждой длл своя куча). Тем не мение чтото портится .
Может дело как раз в этих кучах? Может лучше использовать стандартные функции malloc и free/new и delete.
По архитектуре: зачем держать ссылку самому на себя. По идее, главное окно должно держать ссылки. Потом, зачем тебе вообще они нужны? Хочешь, чтобы все автоматом удалялось/подчищалось — убивай объект в FinalMessage, а деструктор сделать защищенным.
WH>При использование VCL проблем не возникло...