Эффективное использование WTL
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 16.06.03 13:13
Оценка: 1095 (34)
Статья :
Эффективное использование WTL
Автор(ы): Алексей Ширшов
Дата: 12.06.2003
WTL — быстрая и удобная OO-библиотека, являющаяся оберткой над функциями Win32 API, отвечающими за создание графического интерфейса пользователя. Данная статья ставит своей целью познакомить читателя с классами этой библиотеки, не нашедшими должного отражения в статьях RSDN, CodeProject и др.
Статья также содержит обзор свободно распостраняемых расширений этой библиотеки.


Авторы :
Alexey Shirshov

Аннотация :
WTL — быстрая и удобная OO-библиотека, являющаяся оберткой над функциями Win32 API, отвечающими за создание графического интерфейса пользователя. Данная статья ставит своей целью познакомить читателя с классами этой библиотеки, не нашедшими должного отражения в статьях RSDN, CodeProject и др.
Статья также содержит обзор свободно распостраняемых расширений этой библиотеки.
Re: Эффективное использование WTL
От: apm Россия  
Дата: 16.06.03 14:36
Оценка: +1
Здравствуйте, Alexey Shirshov, Вы писали:

AS>WTL — быстрая и удобная OO-библиотека, являющаяся оберткой над функциями Win32 API, отвечающими за создание графического интерфейса пользователя. Данная статья ставит своей целью познакомить читателя с классами этой библиотеки, не нашедшими должного отражения в статьях RSDN, CodeProject и др.

AS>Статья также содержит обзор свободно распостраняемых расширений этой библиотеки.

Надеюсь эта статья положит начало целого цикла статей о WTL
... << RSDN@Home 1.0 beta 7a >>
BB for fun
Re[2]: Эффективное использование WTL
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 16.06.03 15:25
Оценка:
Здравствуйте, apm, Вы писали:

[]

Уже положила.
Re: Эффективное использование WTL
От: Евгений Коробко  
Дата: 17.06.03 05:07
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

<...>

Читая про "мягкий и комфортный мир" MFC я плакал...

А вообще-то я вот что думаю. Нужны не каркасы, а библиотеки. Общую структуру я лучше сам ручками сделаю. А вот в SDK добавить С++ -ных наворотов было бы очень кстати. У самого периодически зуд начинается сделать следующее:
1. Конструкуторы для структур (wndclassex и пр.)
2. Перегрузить функции, в том числе для этих структур.
3. Сделать классы для хэндлов.
Евгений Коробко
Re[2]: Эффективное использование WTL
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 17.06.03 05:11
Оценка:
Здравствуйте, Евгений Коробко, Вы писали:

ЕК>3. Сделать классы для хэндлов.


http://www.rsdn.ru/files/?libs/handlelib.xml
Re: Эффективное использование WTL
От: Awaken Украина  
Дата: 17.06.03 09:50
Оценка:
>статьях RSDN, CodeProject и др.
AS>Статья также содержит обзор свободно распостраняемых расширений этой библиотеки.

статья полезная и нужная.
пишу сейчас нечто подобное вашему DialogResize но свое.
Re: Эффективное использование WTL
От: MNZ Россия  
Дата: 19.06.03 10:16
Оценка:
Здравствуйте, Alexey Shirshov,

В приведённом примере с разделением сплиттером MDI формы возникает Access Violation при создании десятого Child окна. Причём, если убрать строчку

::SetParent(m_hWndMDIClient, m_vSplit.m_hWnd);

, эффект пропадает. Есть предчувствие, что дело в CommandBar'е при добавлении пунктов меню Window. В Debug версии вылетает на ASSERT'е в atlwin.h строка 1903.
Это у меня руки кривые или действительно баг?

Спасибо.
Re[2]: Эффективное использование WTL
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 19.06.03 10:29
Оценка:
Здравствуйте, MNZ, Вы писали:

[]

Высылай проект по адресу в профиле.
Re[2]: Эффективное использование WTL
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 20.06.03 11:42
Оценка:
Здравствуйте, MNZ, Вы писали:

[]

Провел несколько часов за отладчиком.
Удалось выяснить, что я совершено не понимаю проблемы.
Если добавить следующий обработчки
LRESULT CChildFrame::OnSetFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& bHandled)
{    
    //bHandled = FALSE;
    return 0;
}


Т.е. не отрабатывать установку фокуса, — ошибка не возникает (зато дочерний фрейм — всегда серый). Возможно это связано с тем, что родителем MDIClient могут быть только top-level окна (Q74041). Однако у Эда Гадземски все работает. (http://www.codeproject.com/wtl/SplitPane.asp)

I'm out of any ideas.
Re[3]: Эффективное использование WTL
От: MNZ Россия  
Дата: 20.06.03 12:43
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

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


AS>[]


AS>Провел несколько часов за отладчиком.

AS>Удалось выяснить, что я совершено не понимаю проблемы.
AS>Если добавить следующий обработчки
AS>
AS>LRESULT CChildFrame::OnSetFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& bHandled)
AS>{    
AS>    //bHandled = FALSE;
AS>    return 0;
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)
Что ему от меня надо?
Re: Эффективное использование WTL
От: LaptevVV Россия  
Дата: 15.08.03 08:16
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

Присоединяюсь к пожеланиям начать большую серию статей. Я даже хотел Вам на мыло писать, вопрос задать, где брать информацию (кроме MSDN, естественно) о WTL.
Ничего же печатного нет! Или есть, а я проглядел?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Эффективное использование WTL
От: Юнусов Булат Россия  
Дата: 15.08.03 08:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Что ему от меня надо?


В stdafx.cpp пропиши
#include <dockimpl.cpp>
Re[3]: Эффективное использование WTL
От: Аноним  
Дата: 15.08.03 11:20
Оценка:
Здравствуйте, Юнусов Булат, Вы писали:

ЮБ>Здравствуйте, Аноним, Вы писали:


А>>Что ему от меня надо?


ЮБ>В stdafx.cpp пропиши

ЮБ>
ЮБ>#include <dockimpl.cpp>
ЮБ>


Спасибо большое помогло.
Не судите строго, я только учусь.
Но можно еще вопрос почему MDIClient не перерисовывается?
Re[4]: Эффективное использование WTL
От: Юнусов Булат Россия  
Дата: 15.08.03 20:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Но можно еще вопрос почему MDIClient не перерисовывается?


Как же тебе не видя твой код смогут ответить?
Re[2]: Эффективное использование WTL
От: Nikto Россия  
Дата: 17.08.03 11:30
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, Alexey Shirshov, Вы писали:


LVV>Присоединяюсь к пожеланиям начать большую серию статей. Я даже хотел Вам на мыло писать, вопрос задать, где брать информацию (кроме MSDN, естественно) о WTL.

LVV>Ничего же печатного нет! Или есть, а я проглядел?

Лучше всего из исходников — там очень простой и понятный код, который не требует каких-либо дополнительных слов...
Re[3]: Эффективное использование WTL
От: swamp Россия  
Дата: 18.08.03 19:32
Оценка:
Здравствуйте, Nikto, Вы писали:

N>Лучше всего из исходников — там очень простой и понятный код, который не требует каких-либо дополнительных слов...


По исходникам нельзя (точнее значительно труднее) изучить архитектуру. Ими хорошо пользоваться, когда ты уже знаешь что это такое и как оно устроено и тебе надо решить какую-то частную проблему, возникшую в ходе работы. Но не когда ты готовишь лекции для студентов.
... << RSDN@Home 1.1 beta 1 >> (The Clash: Stay Free (Give 'em Enough Rope))
Sincerely yours,
Andrew Simontsev.
Re[4]: Эффективное использование WTL
От: Nikto Россия  
Дата: 19.08.03 03:36
Оценка: -1
Здравствуйте, swamp, Вы писали:

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


N>>Лучше всего из исходников — там очень простой и понятный код, который не требует каких-либо дополнительных слов...


S> По исходникам нельзя (точнее значительно труднее) изучить архитектуру. Ими хорошо пользоваться, когда ты уже знаешь что это такое и как оно устроено и тебе надо решить какую-то частную проблему, возникшую в ходе работы. Но не когда ты готовишь лекции для студентов.


Если ты изучал MFC, архитектура WTL тебе должна очень легко тебе "даться". Названия классов фактически дублируются. Различие только в классах типа C****Impl. Однако их назначение понятно из названия класса, а Impl легко понимается из исходников.
Если же ты не изучал MFC , то стоит изучить .
Re: Эффективное использование WTL
От: akvilon  
Дата: 18.11.04 13:06
Оценка:
Здравствуйте, вопрос про сплиттер

В чем смысл этого:

// Деактивируем дочернее окно
::SendMessage((HWND)wParam, WM_NCACTIVATE, FALSE, 0);

// Активируем дочернее окно
::SendMessage((HWND)lParam, WM_NCACTIVATE, TRUE, 0);


Я понимаю, что этот код активизирует (подсвечивает рамку) окно и деактивирует другое. Ну а в простом Frame без сплиттера, что активизировало дочерние окна??? Никак не найду ... (или не пойму)
Re[2]: Эффективное использование WTL
От: Аноним  
Дата: 18.11.04 13:19
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, Alexey Shirshov, Вы писали:


LVV>Присоединяюсь к пожеланиям начать большую серию статей. Я даже хотел Вам на мыло писать, вопрос задать, где брать информацию (кроме MSDN, естественно) о WTL.

LVV>Ничего же печатного нет! Или есть, а я проглядел?

а как же WTL Developer Guide от Clipcode?
я ее распечатал , сшил и теперь у меня есть
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.