Аннотация :
WTL — быстрая и удобная OO-библиотека, являющаяся оберткой над функциями Win32 API, отвечающими за создание графического интерфейса пользователя. Данная статья ставит своей целью познакомить читателя с классами этой библиотеки, не нашедшими должного отражения в статьях RSDN, CodeProject и др.
Статья также содержит обзор свободно распостраняемых расширений этой библиотеки.
Здравствуйте, Alexey Shirshov, Вы писали:
AS>WTL — быстрая и удобная OO-библиотека, являющаяся оберткой над функциями Win32 API, отвечающими за создание графического интерфейса пользователя. Данная статья ставит своей целью познакомить читателя с классами этой библиотеки, не нашедшими должного отражения в статьях RSDN, CodeProject и др. AS>Статья также содержит обзор свободно распостраняемых расширений этой библиотеки.
Надеюсь эта статья положит начало целого цикла статей о WTL
Читая про "мягкий и комфортный мир" MFC я плакал...
А вообще-то я вот что думаю. Нужны не каркасы, а библиотеки. Общую структуру я лучше сам ручками сделаю. А вот в SDK добавить С++ -ных наворотов было бы очень кстати. У самого периодически зуд начинается сделать следующее:
1. Конструкуторы для структур (wndclassex и пр.)
2. Перегрузить функции, в том числе для этих структур.
3. Сделать классы для хэндлов.
В приведённом примере с разделением сплиттером MDI формы возникает Access Violation при создании десятого Child окна. Причём, если убрать строчку
::SetParent(m_hWndMDIClient, m_vSplit.m_hWnd);
, эффект пропадает. Есть предчувствие, что дело в CommandBar'е при добавлении пунктов меню Window. В Debug версии вылетает на ASSERT'е в atlwin.h строка 1903.
Это у меня руки кривые или действительно баг?
Т.е. не отрабатывать установку фокуса, — ошибка не возникает (зато дочерний фрейм — всегда серый). Возможно это связано с тем, что родителем MDIClient могут быть только top-level окна (Q74041). Однако у Эда Гадземски все работает. (http://www.codeproject.com/wtl/SplitPane.asp)
Здравствуйте, Alexey Shirshov, Вы писали:
AS>Здравствуйте, MNZ, Вы писали:
AS>[]
AS>Провел несколько часов за отладчиком. AS>Удалось выяснить, что я совершено не понимаю проблемы. AS>Если добавить следующий обработчки AS>
AS>Т.е. не отрабатывать установку фокуса, — ошибка не возникает (зато дочерний фрейм — всегда серый). Возможно это связано с тем, что родителем MDIClient могут быть только top-level окна (Q74041). Однако у Эда Гадземски все работает. (http://www.codeproject.com/wtl/SplitPane.asp)
AS>I'm out of any ideas.
В таком случае есть вариант — унаследовать CMainFrame от CSplitterWindowImpl. Тогда сплиттер-рамка будет окном верхнего уровня.
Re: Эффективное использование WTL
От:
Аноним
Дата:
15.08.03 07:56
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:
AS>Статья : AS>Эффективное использование WTL
AS>Авторы : AS>Alexey Shirshov
AS>Аннотация : AS>WTL — быстрая и удобная OO-библиотека, являющаяся оберткой над функциями Win32 API, отвечающими за создание графического интерфейса пользователя. Данная статья ставит своей целью познакомить читателя с классами этой библиотеки, не нашедшими должного отражения в статьях RSDN, CodeProject и др. AS>Статья также содержит обзор свободно распостраняемых расширений этой библиотеки.
Граждане у кого-нибудь заработало
Совместное использование библиотеки TabControls и DockWins
Я сделал все по шагам, затем еще кучу недостатков исправил и теперь он у меня ругается на
error LNK2001: unresolved external symbol "protected: static class dockwins::CDWSettings::CSettings dockwins::CDWSettings::settings" (?settings@CDWSettings@dockwins@@1VCSettings@12@A)
Что ему от меня надо?
Присоединяюсь к пожеланиям начать большую серию статей. Я даже хотел Вам на мыло писать, вопрос задать, где брать информацию (кроме MSDN, естественно) о WTL.
Ничего же печатного нет! Или есть, а я проглядел?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Alexey Shirshov, Вы писали:
LVV>Присоединяюсь к пожеланиям начать большую серию статей. Я даже хотел Вам на мыло писать, вопрос задать, где брать информацию (кроме MSDN, естественно) о WTL. LVV>Ничего же печатного нет! Или есть, а я проглядел?
Лучше всего из исходников — там очень простой и понятный код, который не требует каких-либо дополнительных слов...
Здравствуйте, Nikto, Вы писали:
N>Лучше всего из исходников — там очень простой и понятный код, который не требует каких-либо дополнительных слов...
По исходникам нельзя (точнее значительно труднее) изучить архитектуру. Ими хорошо пользоваться, когда ты уже знаешь что это такое и как оно устроено и тебе надо решить какую-то частную проблему, возникшую в ходе работы. Но не когда ты готовишь лекции для студентов.
Здравствуйте, swamp, Вы писали:
S>Здравствуйте, Nikto, Вы писали:
N>>Лучше всего из исходников — там очень простой и понятный код, который не требует каких-либо дополнительных слов...
S> По исходникам нельзя (точнее значительно труднее) изучить архитектуру. Ими хорошо пользоваться, когда ты уже знаешь что это такое и как оно устроено и тебе надо решить какую-то частную проблему, возникшую в ходе работы. Но не когда ты готовишь лекции для студентов.
Если ты изучал MFC, архитектура WTL тебе должна очень легко тебе "даться". Названия классов фактически дублируются. Различие только в классах типа C****Impl. Однако их назначение понятно из названия класса, а Impl легко понимается из исходников.
Если же ты не изучал MFC , то стоит изучить .
Я понимаю, что этот код активизирует (подсвечивает рамку) окно и деактивирует другое. Ну а в простом Frame без сплиттера, что активизировало дочерние окна??? Никак не найду ... (или не пойму)
Re[2]: Эффективное использование WTL
От:
Аноним
Дата:
18.11.04 13:19
Оценка:
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Alexey Shirshov, Вы писали:
LVV>Присоединяюсь к пожеланиям начать большую серию статей. Я даже хотел Вам на мыло писать, вопрос задать, где брать информацию (кроме MSDN, естественно) о WTL. LVV>Ничего же печатного нет! Или есть, а я проглядел?
а как же WTL Developer Guide от Clipcode?
я ее распечатал , сшил и теперь у меня есть