Давно слышал но ни разу не пользовался HTMLayout-ом
Вот таки дошли ручки, решил использовать в своем небольшом приложении
С EXE файлом нужно распространять htmlayout.dll , лицензия кстати без ограничений.
Подключать либу в код просто:
Создаем для примера простое WTL SDI приложение и редактируем view-класс (CHTMLView в моих примерах):
Меняем заголовок класса :
class CHTMLView : public CWindowImpl, public CHTMLayoutHost, public htmlayout::event_handler |
Обязательно добавляем в конструктор инициализацию конструктора event_handler (в данном случае указывается что обрабатывать будем все события)
CHTMLView() : event_handler( unsigned(-1) /*handle all event groups*/ ) {} |
В обработчике OnCreate обязательно вызываем указанные ниже функции, это нужно чтоб наш view имел обработчик для событий и чтоб view принимал все нотификации от HTMLayout:
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { DefWindowProc(); // HTMLayout stuff SetCallback(); // reroute all notifications here SetEventHandler(this); // set this as a "zero level" event handler, all ... |
и так далее, в HTMLayout SDK есть отличный пример на WTL, называется “Browse” – в нем можно посмотреть как обрабатываются сами события внутре view (см. htmlview.h).
Также с помощью этого собранного примера можно тестить свои шаблончики на HTML+CSS.
Еще деталь, чтоб работали так называемые behaviors необходимо добавлять соответствующий behavior-файл в проект (например мне для табов пришлось добавить файлик behavior_tabs.cpp из каталога include/behaviors в HTMLayout SDK и только после этого табы из примеров заработали)