И все-таки макросы в разы лучше для карты сообщений. Учитывая, что при этом карта сообщения преобразуется макросами в конструкцию вида 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 );
Вывод: боюсь эта библиотека не показывает красоту С++ в полной мере (хотя бы так, как это делает ATL/WTL), и более того, показывает, что иногда макросами не стоит пренебрегать. А выражение про убогость win32 действительно смахивает на "пальцы".