SWL – Small Windows Library
От: Alexander Kluev  
Дата: 13.02.03 10:57
Оценка: 55 (2) -2
Статья:
SWL – Small Windows Library
Автор(ы): Alexander Kluev
Дата: 05.02.2003
Small Windows Library – это экспериментальная оконная библиотека вокруг win32. Особой практической ценности она не представляет ввиду неизбежности ухода win32 со сцены, но тем не менее иллюстрирует еще один способ организации оконной библиотеки. Она предназначена показать красоту С++ и убожество win32.


Авторы:
Alexander Kluev

Аннотация:
Small Windows Library – это экспериментальная оконная библиотека вокруг win32. Особой практической ценности она не представляет ввиду неизбежности ухода win32 со сцены, но тем не менее иллюстрирует еще один способ организации оконной библиотеки. Она предназначена показать красоту С++ и убожество win32.
Отлично!
От: limax Эстония http://mem.ee
Дата: 19.03.03 09:44
Оценка:
Отличное использование шаблонов!
Кстати, показывает убожество не только Win32, но и С++. :))
Все эти приёмы должны оптимизироваться на этапе компиляции, что в С++ конечно же не происходит. :-Р
Have fun: Win+M, Ctrl+A, Enter
А каким образом она показывает убожество win32? ;)
От: Nikto Россия  
Дата: 18.02.03 10:56
Оценка:
Очень интерессно, как пример использования templat
От: Jack Osicilator  
Дата: 14.02.03 18:23
Оценка:
Люблю OSCилировать
Велосипед уже придуман (его имя WTL) :)
От: apm Россия  
Дата: 14.02.03 14:42
Оценка:
BB for fun
Убожество Win32...
От: Аноним  
Дата: 14.02.03 10:57
Оценка:
Весьма поверхностное замечание. Попахивает пальцами.
И никуда Win32 не уйдет.
Re: Отлично!
От: Kluev  
Дата: 19.03.03 13:36
Оценка:
А чего там оптимизировать? все и так быстро :)
Самое главное чтобы программеру было удобно.
Re: Убожество Win32...
От: adontz Грузия http://adontz.wordpress.com/
Дата: 19.02.03 15:03
Оценка:
Win32 не уйдёт!!! Это точно... Убожество? Любая библиотека основанная на API сейчас выглядит убого :) Но для Win32 это нормально и обоснованно. Так что здесь автор перестарался.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: А каким образом она показывает убожество win32
От: Kluev  
Дата: 18.02.03 12:46
Оценка:
А вы посмотрите (в исходники) как приходится изворачиваться, чтобы сделать что-то удобное :)
Re: Велосипед уже придуман (его имя WTL) :)
От: Kluev  
Дата: 14.02.03 15:09
Оценка: :)
Велосипед велосипеду рознь ;)
Re: Убожество Win32...
От: Kluev  
Дата: 14.02.03 12:10
Оценка:
Это мое личное отношение к win32 (не тема для флейма ;) )
Re: Убожество Win32...
От: Kluev  
Дата: 20.02.03 09:21
Оценка:
Говоря про уход win32 я имел ввиду уход многих разработчиков на .net. Сам api конечно же никуда не денется.
Re: Убожество Win32...
От: Kluev  
Дата: 19.02.03 19:46
Оценка:
Не стреляйте в пианиста ;) он играет как умеет
Re: Убожество Win32...
От: Аноним  
Дата: 18.02.03 08:52
Оценка:
Очень, жаль.
Ага. WTL лучшее.
От: Andrew S Россия http://alchemy-lab.com
Дата: 14.02.03 19:16
Оценка:
И все-таки макросы в разы лучше для карты сообщений. Учитывая, что при этом карта сообщения преобразуется макросами в конструкцию вида switch{case}, очевидно, что у компилера есть все шансы оптимизировать выборку сообщения по ID во время компиляции, что он в большинстве случаев и делает (обычно используется некоторое преобразование над аргументом switch, а далее выбирается нужный элемент массива переходов).
У вас же поиск происходит горааааааздо медленнее (более того, он похоже даже не ассоциативный):
bool Handler::call( SWL::Handler mmp[], Wnd *wnd, MsgBase *msg ) {
Handler *p = mmp;
_ASSERTE( tag_begin == p->_proxy );
if ( p->_id == tag_x )
_init( mmp );

Handler vh;
vh._id = msg->id;

Handler *hs = mmp + 1;
Handler *he = mmp + ( 1 + mmp[0]._id );

Handler *ph = lower_bound( hs, he, vh, _less_by_id );

if ( ph != he && !(vh._id < ph->_id) ) {
ph->_call( wnd, msg );
return false;
}
return true;
}

Вывод: боюсь эта библиотека не показывает красоту С++ в полной мере (хотя бы так, как это делает ATL/WTL), и более того, показывает, что иногда макросами не стоит пренебрегать. А выражение про убогость win32 действительно смахивает на "пальцы".
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re: Убожество Win32...
От: dad  
Дата: 07.03.03 14:26
Оценка:
я пока не собираюсь на .Net :)
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Re: Убожество Win32...
От: Kluev  
Дата: 18.02.03 12:47
Оценка:
Не стоит расстраиваться ;)
Re: Ага. WTL лучшее.
От: Kluev  
Дата: 14.02.03 20:35
Оценка:
У меня используется двоичный поиск в предварительено отсортированном массиве:
Handler *ph = lower_bound( hs, he, vh, _less_by_id ); — смотрите сырцы stl
это работает не намного медленне (а может и быстрее. я не проверял {это мне неинтересно})
К тому же поиск сообщения в карте/свитче это не самое узкое место в программах.

И давайте не будем разводить флейм типа SWL vs WTL, макросы vs шаблоны. Здесь показано как сделать БЕЗ макросов, другой стиль програмирования демонстрируется.

Насчет убогости win32 я уже сказал, что это мое личное отношение.
Re: Ага. WTL лучшее.
От: Kluev  
Дата: 14.02.03 21:16
Оценка:
To Andrew S
Забыл написать, что в WTL макросы не в switch\case, а в обычный if преобразуются. Оптимизацией там и не пахнет, да и не нужна она там.
Re: Ага. WTL лучшее.
От: Tarmik Ниоткуда  
Дата: 17.02.03 15:09
Оценка:
Бр... Люди — а можно немного мозгов проявить ?
для чего оптимизация message mapов ?
если в вашем диалоге больше 255 контроллов — то ни один узер им пользоваться не будет.
Если меньше — то for будет работать быстрее и занимать меньше памяти чем любые его оптимизации (i.e. map)

Но мне понравилась идея Msg<WM_CREATE>... в WTL до такого не дошли —
там вечно конверитовать надо из параметеров в хрен знает что...
- и т.д. и т.п.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.